///獲取具有指定透明度的圖像。
///& lt;/summary & gt;
///& lt;param name = " SourceBitmap " & gt源圖像
///& lt;param name = " OpaCityValue " & gt透明度百分比
///& lt;returns & gt& lt/returns & gt;
///& lt;備註& gt& lt/備註& gt
公共位圖TheTransparentBitmap(位圖源位圖,雙不透明度值)
{
嘗試{
//定義壹個臨時圖片副本
Bitmap ForOutBitmap =新位圖(source Bitmap);
//定義圖像數據
BitmapData BMP data = new BitmapData();
//給圖像指定區域的數據賦值。
bmpDATA = ForOutBitmap。LockBits(新矩形(0,0,SourceBitmap。寬度- 1,源位圖。Height - 1),ImageLockMode。只讀,像素格式。format 32 bppargb);
//定義用於計算的字節數組。
byte[] BTS =新字節[bmpDATA。Stride * bmpDATA。身高+1];
//將Byte設置為指定的圖像數據。
系統。runtime . interop services . marshal . copy(BMP data。掃描0,BTS,0,BTS。長度-1);
//用於計算的變量,以避免“除數不能為0”
int tmp value = 0;
//因為已經被指定為32位ARGB模式,所以每四個數組都是B G R A,A表示透明。
for(int I = 0;我& lt= BTS。長度-4;I += 4) {
tmp value = BTS[I+3]* opacity value;
//修改透明度
BTS[I+3]= tmp value;
}
//計算後將字節組返回給指定的圖像數據。
系統。runtime . interop services . marshal . copy(BTS,0,bmpDATA。掃描0,BTS。長度-1);
//解鎖圖像數據,以便調用線程可以繼續執行。
ForOutBitmap。解鎖位(BMP data);
//返回處理後的圖像。
返回ForOutBitmap
} catch (Exception ex) {
//如果發生異常,則返回空值。
返回null
}
}