hytlok 2015-07-23 02:57 采纳率: 50%
浏览 2152

CreateCompatibleDC,CreateCompatibleBitmap作用

mDC.CreateCompatibleDC(NULL)生成了一个与屏幕显示所兼容的DC,
mBitmap.CreateCompatibleBitmap(&mDC,width,height)生成了一个与mDC所兼容的位图句柄
再将mBitmap选入,mDC.SelectObject(&mBitmap)运行会出现错误。

CreateCompatibleDC,CreateCompatibleBitmap,SelectObject运行时起到什么作用,对CDC,CBitmap做了哪些设置,有懂的大神解释一下吗?

  • 写回答

1条回答 默认 最新

  • oyljerry 2015-07-23 03:41
    关注

    CDC MemDC; //首先定义一个显示设备对象
    CBitmap MemBitmap;//定义一个位图对象
    //随后建立与屏幕显示兼容的内存显示设备
    MemDC.CreateCompatibleDC(NULL);
    //这时还不能绘图,因为没有地方画 ^_^
    //下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小,也可以自己定义(如:有滚动条时就要大于当前窗口的大小,在BitBlt时决定拷贝内存的哪部分到屏幕上)
    MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);

    //将位图选入到内存显示设备中
    //只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
    CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
    //先用背景色将位图清除干净,这里我用的是白色作为背景
    //你也可以用自己应该用的颜色
    MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));
    //绘图
    MemDC.MoveTo(……);
    MemDC.LineTo(……);

    //将内存中的图拷贝到屏幕上进行显示
    pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);
    //绘图完成后的清理
    MemBitmap.DeleteObject();
    MemDC.DeleteDC();

    评论

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境