求教,妖哥大大,关于HDC句柄

maohailin_ 2012-10-15 11:11:19
我想从IMage的窗口句柄,用api GetDC,得到IMage的bitmap的HDC句柄,失败了,

void __fastcall TForm2::Button1Click(TObject *Sender)
{
TJPEGImage *jpg=new TJPEGImage();
TMemoryStream *stream=new TMemoryStream();
Graphics::TBitmap *BrushBmp = new Graphics::TBitmap;
BrushBmp->SetSize(352,480);
HDC hdc=GetWindowDC(BrushBmp->Handle) ;


//BrushBmp->Handle ;
stream->LoadFromFile("d:\\555.jpg") ;
stream->Seek(0,0);
jpg->LoadFromStream(stream);
Image1->Picture ->Bitmap ->Assign(jpg);
Image1->Picture ->Bitmap ->SaveToFile("d:\\124.bmp");
HANDLE h=Image1->Picture ->Bitmap ->Handle ;
HDC hdci=GetDC(h) ;
::StretchBlt(hdc,0,0,352,480,hdci,0,0,720,480,PATCOPY);
BrushBmp->SaveToFile("d:\\ok.bmp");
//jpg->
delete stream;
delete jpg;
delete BrushBmp;
}

主要目的是想用stretchBlt这个api进行bmp图片的缩放效果,但是调试发现,

取到的两个hdc,都是NULL,请教妖哥,我这样写为什么得不到正确的hdc
...全文
140 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
maohailin_ 2012-10-16
  • 打赏
  • 举报
回复
哦,谢谢,妖哥,到处都是您的身影,好崇拜啊,
结帖了
ccrun.com 2012-10-16
  • 打赏
  • 举报
回复
位图缩放肯定有失真,除非你用矢量图。
maohailin_ 2012-10-16
  • 打赏
  • 举报
回复
上面代码,实现把map的图片缩小成352x288,原来的图片是720x480,只是缩小后,图片上有花点了,如果放大的,就会很正常,不知道为什么?
maohailin_ 2012-10-16
  • 打赏
  • 举报
回复
int a;
HANDLE h ,hc;
Graphics::TBitmap *map=new Graphics::TBitmap;
Graphics::TBitmap *map1=new Graphics::TBitmap;
map1->SetSize(352,288);
map ->LoadFromFile("d:\\a.bmp");
a=StretchBlt(map1->Canvas ->Handle ,0,0,352,288,map->Canvas ->Handle ,0,0,720,480,SRCCOPY);
map1->SaveToFile("d:\\55.bmp");
delete map;
delete map1;

maohailin_ 2012-10-16
  • 打赏
  • 举报
回复
感谢妖哥,放大实现了,效果很好,可惜,缩小不好,缩小就会出现图片花点,放大很正常,看来要拉申图片,要另想办法了,还是很感谢妖哥的
ccrun.com 2012-10-16
  • 打赏
  • 举报
回复
Image->Canvas->Handle 就是HDC对象

13,825

社区成员

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

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