怎么把内存dc绘制到Graphics上?

cc___999 2013-11-06 02:13:29
怎么把内存dc绘制到Graphics上?
...全文
168 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2013-11-07
  • 打赏
  • 举报
回复
Graphics 就是用于绘制的. 你可以先处理内存DC上的图. 然后再通过Graphic把DC上的图绘制到屏幕上. 你说的东西根本就不能实现 Graphics类只是封装了一些方法, 其本身不能保存任何数据. Graphics::Graphics(Image*) Graphics::Graphics(HDC) Graphics::Graphics(HDC,HANDLE). Graphics::Graphics(HWND,BOOL) 它只能依赖其它东西而存在. 你可以定义两个内存DC, 一个内存DC,比如hDC1就是你说要的处理的DC, 另一个就用于绑定Graphics的, 比如hDC2. 这样你要把hDC1的东西画到Graiics中就相当于绘制到hDC2中, 直接BitBlt即可.
_船长_ 2013-11-07
  • 打赏
  • 举报
回复
引用 6 楼 sx5486510 的回复:
引用 5 楼 jzycode 的回复:
引用 4 楼 sx5486510 的回复:
[quote=引用 3 楼 niannixv 的回复:] [quote=引用 楼主 sx5486510 的回复:] 怎么把内存dc绘制到Graphics上?
构造一个以内存dc为参数的graphics
现在是以目标dc作为参数生成graphics,然后需要把源dc通过graphics画到目标dc上
可以通过GetHdc()获取到Graphics的hDC,然后就可以调用GDI的函数在hDC上面进行绘制[/quote]如果这样的话dc画上去不会有旋转[/quote] 你到底想干嘛,我都被人搞晕了
cc___999 2013-11-07
  • 打赏
  • 举报
回复
引用 5 楼 jzycode 的回复:
引用 4 楼 sx5486510 的回复:
引用 3 楼 niannixv 的回复:
[quote=引用 楼主 sx5486510 的回复:] 怎么把内存dc绘制到Graphics上?
构造一个以内存dc为参数的graphics
现在是以目标dc作为参数生成graphics,然后需要把源dc通过graphics画到目标dc上
可以通过GetHdc()获取到Graphics的hDC,然后就可以调用GDI的函数在hDC上面进行绘制[/quote]如果这样的话dc画上去不会有旋转
cc___999 2013-11-07
  • 打赏
  • 举报
回复
引用 10 楼 xiaohuh421 的回复:
http://www.cnblogs.com/zhixing/archive/2011/03/21/1990666.html 这里有个例子, 你也可自行 百度 解决. 搜索"GDI+ 旋转" 旋转问题比较容易的. 只要你图像已经从摄像头拿到图了.
他这是是通过Image加载本地文件,我也尝试过通过IStream从内存加载图像RGB数据,但是不好用,
xiaohuh421 2013-11-07
  • 打赏
  • 举报
回复
http://www.cnblogs.com/zhixing/archive/2011/03/21/1990666.html 这里有个例子, 你也可自行 百度 解决. 搜索"GDI+ 旋转" 旋转问题比较容易的. 只要你图像已经从摄像头拿到图了.
cc___999 2013-11-07
  • 打赏
  • 举报
回复
引用 8 楼 xiaohuh421 的回复:
Graphics 就是用于绘制的. 你可以先处理内存DC上的图. 然后再通过Graphic把DC上的图绘制到屏幕上. 你说的东西根本就不能实现 Graphics类只是封装了一些方法, 其本身不能保存任何数据. Graphics::Graphics(Image*) Graphics::Graphics(HDC) Graphics::Graphics(HDC,HANDLE). Graphics::Graphics(HWND,BOOL) 它只能依赖其它东西而存在. 你可以定义两个内存DC, 一个内存DC,比如hDC1就是你说要的处理的DC, 另一个就用于绑定Graphics的, 比如hDC2. 这样你要把hDC1的东西画到Graiics中就相当于绘制到hDC2中, 直接BitBlt即可.
我从摄像头捕捉一帧画面,然后需要把他做一个旋转贴到dc上,有什么方法?
_船长_ 2013-11-06
  • 打赏
  • 举报
回复
引用 4 楼 sx5486510 的回复:
引用 3 楼 niannixv 的回复:
引用 楼主 sx5486510 的回复:
怎么把内存dc绘制到Graphics上?
构造一个以内存dc为参数的graphics
现在是以目标dc作为参数生成graphics,然后需要把源dc通过graphics画到目标dc上
可以通过GetHdc()获取到Graphics的hDC,然后就可以调用GDI的函数在hDC上面进行绘制
cc___999 2013-11-06
  • 打赏
  • 举报
回复
引用 3 楼 niannixv 的回复:
引用 楼主 sx5486510 的回复:
怎么把内存dc绘制到Graphics上?
构造一个以内存dc为参数的graphics
现在是以目标dc作为参数生成graphics,然后需要把源dc通过graphics画到目标dc上
DashBird 2013-11-06
  • 打赏
  • 举报
回复
引用 楼主 sx5486510 的回复:
怎么把内存dc绘制到Graphics上?
构造一个以内存dc为参数的graphics
cc___999 2013-11-06
  • 打赏
  • 举报
回复
引用 1 楼 Luisfan 的回复:
DC hDC = ::GetDC( this->m_hWnd ); HDC hMemDC = ::CreateCompatibleDC( hDC ); HBITMAP hBitmap = ::CreateCompatibleBitmap( hDC, m_FullRect.Width(), m_FullRect.Height()); SelectObject( hMemDC, hBitmap ); HBRUSH hBrush = CreateSolidBrush( RGB( 245, 243, 240)); FillRect( hMemDC, &nrect, hBrush ); DrawExtent(m_FullRect, hMemDC, m_userID); BitBlt( hDC, FULL_LEFT_OFFSET, FULL_LEFT_OFFSET, full_x/*m_FullRect.Width()*/, full_y/*m_FullRect.Height()*/, hMemDC, 0, 0,SRCCOPY ); ::ReleaseDC( this->m_hWnd, hDC ); DeleteDC( hMemDC ); DeleteObject( hBitmap ); DeleteObject( hBrush );
我需要用GDI+来画,用来画dc旋转
Luisfan 2013-11-06
  • 打赏
  • 举报
回复
DC hDC = ::GetDC( this->m_hWnd ); HDC hMemDC = ::CreateCompatibleDC( hDC ); HBITMAP hBitmap = ::CreateCompatibleBitmap( hDC, m_FullRect.Width(), m_FullRect.Height()); SelectObject( hMemDC, hBitmap ); HBRUSH hBrush = CreateSolidBrush( RGB( 245, 243, 240)); FillRect( hMemDC, &nrect, hBrush ); DrawExtent(m_FullRect, hMemDC, m_userID); BitBlt( hDC, FULL_LEFT_OFFSET, FULL_LEFT_OFFSET, full_x/*m_FullRect.Width()*/, full_y/*m_FullRect.Height()*/, hMemDC, 0, 0,SRCCOPY ); ::ReleaseDC( this->m_hWnd, hDC ); DeleteDC( hMemDC ); DeleteObject( hBitmap ); DeleteObject( hBrush );

15,979

社区成员

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

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