如何合併兩張圖,第二張白色變為透明?? |
尚未結案
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
試試這個做法:
procedure DrawTransparent(DestCanvas: TCanvas; X,Y: smallint; SrcBitmap: TBitmap; AColor: TColor); var ANDBitmap, ORBitmap: TBitmap; CM: TCopyMode; Src: TRect; begin ANDBitmap:= NIL; ORBitmap:= NIL; try ANDBitmap:= TBitmap.Create; ORBitmap:= TBitmap.Create; Src := Bounds(0,0, SrcBitmap.Width, SrcBitmap.Height); with ORBitmap do begin Width:= SrcBitmap.Width; Height:= SrcBitmap.Height; Canvas.Brush.Color := clBlack; Canvas.CopyMode := cmSrcCopy; Canvas.BrushCopy(Src, SrcBitmap, Src, AColor); end; with ANDBitmap do begin Width:= SrcBitmap.Width; Height:= SrcBitmap.Height; Canvas.Brush.Color := clWhite; Canvas.CopyMode := cmSrcInvert; Canvas.BrushCopy(Src, SrcBitmap, Src, AColor); end; with DestCanvas do begin CM := CopyMode; CopyMode := cmSrcAnd; Draw(X,Y, ANDBitmap); CopyMode := cmSrcPaint; Draw(X,Y, ORBitmap); CopyMode := CM; end; finally ANDBitmap.Free; ORBitmap.Free; end; end;資料來源: http://groups.google.com/groups?hl=zh-TW&lr=&th=199a6b1977db1977&rnum=10 -- QBQ: 我能做什麼? |
TheMoon
中階會員 發表:17 回覆:95 積分:67 註冊:2002-06-05 發送簡訊給我 |
附一段code請參考,
您可以去Help查CopyMode,
用不同的CopyMode可做到不同的效果。
Good Luck < class="code">
var
A, B: TBitmap;
begin
A:= NIL;
B:= NIL;
try
A:= TBitmap.Create;
B:= TBitmap.Create;
A.LoadFromFile('A.bmp'); //上圖
B.LoadFromFile('B.bmp'); //下圖 A.Canvas.CopyMode:= cmSrcAnd;
A.Canvas.Draw(0,0,B);
Image1.Picture.Assign(A);
finally
A.Free;
B.Free;
end;
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |