TGPBitmap转为TBitmap

TGBBitmap用在GDI+中,而TBitmap用在GDI中,有的时候,我们需要将它们进行转换,例如我们要将一个JPEG的图片的缩略图放到TBitmap中,这样它就可以很方便的被Windows中的多个控件所使用(如ImageList、Image等等控件)。

       程序用DELPHI实现,使用了for Delphi 的GDI+接口函数,GDI+部分的代码可能与网上的不同,但差别不大。

     代码如下:

use  gdipapi,gdipobj,gdiputil

procedure TForm1.ToBitmap(fnames:string);
VAR Graphics  : TGPGraphics;
    Image, Thumbnail: TGPImage;
    TGPbmp:TGPBitmap;
    bmp:TBitmap;
    hb:HBitmap;
begin
   //打开源图片文件,可以是JPEG、BMP、GIF、TIFF、PNG
   Image:=TGPImage.Create(fnames);
   //创建一个120*120的TGPBitmap,作为绘制缩略图的容器
   TGPbmp:=TGPBitmap.Create(120,120,PixelFormat32bppRGB);
   //取得源图片的缩略图
   Thumbnail := image.GetThumbnailImage(120, 120,   nil,   nil);
   //绘制缩略图到TGBbmp;
   Graphics :=TGPGraphics.Create(TGPbmp);
   Graphics.DrawImage(Thumbnail,  0, 0,Thumbnail.GetWidth,Thumbnail.GetHeight);
   //创建TBitmap位图
   bmp:=Tbitmap.Create ;
   bmp.width:=120;
   bmp.height:=120;
   //开始转换,hb用于过渡。
   TGBbmp.GetHBITMAP(0,hB);
   bmp.handle:=hb;
  
   {你自己的代码,将bmp用在合适的地方}
   {例如 imagelist1.add(bmp,nil);}
  
   //使用完了,释放.
   Image.free;
   Thumbnail.free;
   Graphics.free;
   TGPbmp.free;
   bmp.free;

end;



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值