微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

复制另一个HBITMAP的位图

我想写一个类来包装位图function在我的程序中。

一个有用的function是从另一个位图句柄复制位图。 我有点卡住了:

void operator=( MyBitmapType & bmp ) { HDC dcmem; HDC dcSource; if( m_hBitmap != bmp.Handle() ) { if( m_hBitmap ) this->dispoSEOf(); // copy the bitmap header from the source bitmap Getobject( bmp.Handle(),sizeof(BITMAP),(LPVOID)&m_bmpHeader ); // Create a compatible bitmap dcmem = CreateCompatibleDC( NULL ); m_hBitmap = CreateCompatibleBitmap( dcmem,m_bmpHeader.bmWidth,m_bmpHeader.bmHeight ); // copy bitmap data BitBlt( dcmem,bmp.Header().bmWidth,bmp.Header().bmHeight,dcSource,SRCcopY ); } }

这段代码缺less一件事:如果我所有的源位图是一个句柄(例如一个HBITMAP?),如何获得HDC到源位图?

你可以在上面的代码中看到,我在BitBlt()调用中使用了“dcSource”。 但我不知道如何从源位图的句柄得到这个dcSource(bmp.Handle()返回源位图句柄)

一个bitarray中find第一个

将BMP加载到OpenGL纹理切换红色和蓝色的颜色。 (C ++ /视窗)

为什么位图中的数据超出了范围?

Windows成像组件 – Direct2D C ++ – 绘图,保存

GDI GradientFill不能在离屏位图上工作

更改Win32窗口的像素

只使用GDI()保留图像的红色通道

有没有办法使用本机C ++从WPF窗口捕获位图?

快速/简单的方法将Windows位图旋转90度?

为什么用这种方式计算位图大小?

你不能 – 根本不可能将源位图选入DC中,即使这样你也无法找到DC。

要做你的副本,你可能想要使用像这样的东西:

dcSrc = CreateCompatibleDC(NULL); SelectObject(dcSrc,bmp);

然后你可以从源到目标DC。

为我工作:

// hBmp is a HBITMAP HBITMAP hBmpcopy= (HBITMAP) copyImage(hBmp,IMAGE_BITMAP,LR_DEFAULTSIZE);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐