如何使用 SetDIBitsToDevice 函数拷贝指定区域到DC

liweiwei0808 2009-09-21 04:22:41
如,我要实现下面的功能

void Draw(long dstX, long dstY, long dstWidth, long dstHeight,HDC hDC,long srcX, long srcY, long srcWidth, long srcHeight)
{
::SetDIBitsToDevice(hDC, dstX, dstY,srcWidth,srcHeight,0 ,0,0, m_bih.biHeight,m_lpData, // 数据区域
(LPBITMAPINFO)&m_bih, DIB_RGB_COLORS);
}

不知道 SetDIBitsToDevice 的参数如何添写?
...全文
72 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liweiwei0808 2009-09-21
  • 打赏
  • 举报
回复
::SetDIBitsToDevice(hDC, dstX, dstY,m_bih.biWidth, m_bih.biHeight, srcX,0,srcY,m_bih.biHeight,
m_lpData, (LPBITMAPINFO)&m_bih, DIB_RGB_COLORS);

这样可以正确显示,但是第二行的第二个参数设置0就能得到正确的值,但是在MSDN中的描述是
int YSrc, // y-coord of source lower-left corner

为何?

jiabin_007 2009-09-21
  • 打赏
  • 举报
回复
long srcX, long srcY,就是显示源图的左上角,long srcWidth, long srcHeight是显示源图区域的宽和高,他们会贴到函数前4个参数指定的区域中。你试试
liweiwei0808 2009-09-21
  • 打赏
  • 举报
回复
不行啊,我需要的是比如需要显示源图中间一个区域到hdc,你的是从左上角开始显示的。
kaynezhang 2009-09-21
  • 打赏
  • 举报
回复
你自己这不都写出来了吗?
::SetDIBitsToDevice (hdc, x, y, img.Width(), img.Height(), 0, 0, 0, img.Height(),
img.GetMemStart(), bmfh.get(), DIB_RGB_COLORS) ;
这个是我做图像处理的

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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