wei_ziyong
驱动牛犊
驱动牛犊
  • 注册日期2003-12-31
  • 最后登录2010-04-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望16点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
阅读:2421回复:2

作图坐标设置?(bitblt使用)

楼主#
更多 发布于:2005-05-15 16:01
在gdi作图中,为了避免屏幕的闪烁,我创建了一个和要显示图形pdc的兼容的内存dc对像和位图对象。
然后把pdc和兼容的dc的坐标原点都设在整个窗口客户的中心。如下:
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
CBitmap MemBitmap;
MemBitmap.CreateCompatibleBitmap(pDC, cr.right, cr.bottom);
CBitmap* pOldBitmap = MemDC.SelectObject(&MemBitmap);

pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowOrg(0, 0);
pDC->SetViewportOrg(cr.right/2, cr.bottom / 2);
pDC->SetWindowExt(cr.right, cr.bottom);
pDC->SetViewportExt(cr.right, -cr.bottom);

pMemDC->SetMapMode(MM_ANISOTROPIC);
pMemDC->SetWindowOrg(0, 0);
pMemDC->SetViewportOrg(cr.right/2, cr.bottom / 2);
pMemDC->SetWindowExt(cr.right, cr.bottom);
pMemDC->SetViewportExt(cr.right, -cr.bottom);

        pMemDC->MoveTo(0, 0);
        pMemDC->LineTo(cr.right/2, cr.bottom/2);

pDC->BitBlt(-cr.right / 2, cr.bottom / 2, cr.right, cr.bottom, &MemDC, -cr.right / 2, cr.bottom / 2, SRCCOPY);

MemDC.SelectObject(pOldBitmap);
pWnd->ReleaseDC(pDC);

但是我在窗口中看不到我画的图形,我想是bitblt的参数没有设置对,或是前面的坐标映射的关系没有对。请各位高手指点一下,谢谢!
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-16 12:14
代码问题比较多!
应该用CClientDC;MemBitmap没有初始化;BitBlt参数不对等等.
如果方便,把工程贴出来.
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
wei_ziyong
驱动牛犊
驱动牛犊
  • 注册日期2003-12-31
  • 最后登录2010-04-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望16点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-17 09:40
谢谢你的回复,问题我已解决了!!
游客

返回顶部