GDI+ DrawImage使用?

TripH0101 2009-02-04 10:15:23
Gdiplus::Bitmap GpBmp(WideString("Climber.jpg"));
HBITMAP HBmp;
GpBmp.GetHBITMAP(0, &HBmp);
Image2->Picture->Bitmap->Handle = HBmp;
Gdiplus::Graphics gr(Image3->Canvas->Handle);
gr.SetInterpolationMode(InterpolationModeHighQualityBilinear);
gr.DrawImage(&GpBmp, Gdiplus::Rect(0, 0, Image3->Width, Image3->Height), 20, 20, 100, 100, UnitPixel);//UnitPixel
上面这段代码是把Image2的部分缩放到Image3上,如果采用像素为单位可以,如果采用英寸就不行,怎么办?


Gdiplus::Bitmap GpBmp(WideString("Climber.jpg"));
HBITMAP HBmp;
GpBmp.GetHBITMAP(0, &HBmp);
Image2->Picture->Bitmap->Handle = HBmp;
Gdiplus::Graphics gr(Image3->Canvas->Handle);
gr.SetPageUnit(Gdiplus::UnitInch ); //UnitInch 用英寸为单位
gr.SetInterpolationMode(InterpolationModeHighQualityBilinear);

gr.DrawImage(&GpBmp, Gdiplus::Rect(0, 0, Image3->Width, Image3->Height), 0, 0, 1, 1, UnitInch);
这样就画不出图来,0, 0, 1, 1,怎么改都不行,请问是怎么回事?

...全文
1218 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Waiting4you 2009-02-05
  • 打赏
  • 举报
回复
嗯 ,我特意试了一下,发现用UnitInch确实不行。
TripH0101 2009-02-04
  • 打赏
  • 举报
回复
高手请赐教啊
我来看看CB 2009-02-04
  • 打赏
  • 举报
回复
再看看。。。。。。
yumikoo 2009-02-04
  • 打赏
  • 举报
回复
语法

DrawImage(ImageID, x, y [, Width, Height])
描述
在指定位置绘制指定的图片, image ID 可以使用ImageID() 函数从图像库里得到。

I如果可选参数 'Width' 和 'Height' 参数被指定,那么显示的时候可以随便放大缩小图片,但是原图片大小不改变。

另外,你再参考下http://dev.yesky.com/255/2190255_4.shtml那段代码
TripH0101 2009-02-04
  • 打赏
  • 举报
回复
如果把以下代码放在最后,弹出这样的提示:不成功 6 查了一下:6对应的出错信息是 NotImplemented ,函数要怎么改才对啊?请各位大侠们指教
int f = gr.GetLastStatus() ;
if (f != Gdiplus::Ok)
{
ShowMessage("不成功:" + IntToStr(f));
}
TripH0101 2009-02-04
  • 打赏
  • 举报
回复
怎么改啊
Waiting4you 2009-02-04
  • 打赏
  • 举报
回复
转成的英寸以后最后一句里的Image3->Width, Image3->Height也要改成英寸为单位。

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧