問個關於 TGpBitmap 的 FromHBitmap 方法的使用 -开发者知识库

問個關於 TGpBitmap 的 FromHBitmap 方法的使用 -开发者知识库,第1张

RT ...這個類可以很方便實現調整一張圖片的透明度
var GpBmp : TGpBitmap;
    Gd : TGpGraphisc;
    hd ,Img: PChar;
    X,Y : integer;
    Bd : TBitmapData;
    Bmp : TBitmap;
begin
  Bmp := TBitmap.create;
  //對Bmp 的操作
  GpBmp := TGpBitmap.Create(FileName);
  Bd := GpBmp.lockbits(GpRect(0,0,GpBmp.Width,GpBmp.Height),[imread,imWrirte],pf32ppargb);
  For X  := 0 to Bd.height - 1 do 
  begin
    hd := pchar(Bd.Scan0)   X * bd.stride;
    For Y := 0 to bd.width - 1 do 
    begin
      hd[Y * 4   3] := char(100);
    end;  
  end;
  GpBmp.Unlockbits(bd);
  Gd := TGpGraphics.create(canvas.handle);
  gd.drawimage(gpbmp,0,0);
  GpBmp.Free;
  Gd.Free;
  Bmp.Free;
end;
通過創建文件的方式調整透明的方法可以實現效果
但是 TGpBitmap 類有個 FromHBitmap 的方法,也可以獲取一張圖片的實例
  GpBmp := TGpBitmap.FromHBitmap(Bmp.Handle,Bmp.palette);
  Bmp 是事先創建的一張內存位圖,並在上面作了操作,然后再用這種方法調整它的透明度,獲取到的是一個黑色的圖片,
  GpBmp.FromHBitmap()它並沒有獲取到Bmp的數據,請問要怎么用這個方法才能正常調節透明度?而不需要每次都創建一張圖片,然后保存到文件,
再用 create(Filename)的方法載入調節?

12 个解决方案

#1


先:
bmp.pixelformat=pf24bit;
然后再FromHBitmap

最佳答案:

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
U19学习网站 » 問個關於 TGpBitmap 的 FromHBitmap 方法的使用 -开发者知识库