BitBlt用法_BIT函数

BitBlt用法_BIT函数BitBlt用法在VC中显示位图常用取BitBlt()方法,它是将一幅位图从一个设备场景复制到另一个。源和目标DC相互间必须兼容。今天要将一些位图显示到窗口中,所以学习了一下。我已经将要用的位图导入到工程资源中,

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用
 

BitBlt用法

在VC中显示位图常用取BitBlt()方法,它是将一幅位图从一个设备场景复制到另一个。源和目标DC相互间必须兼容。
今天要将一些位图显示到窗口中,所以学习了一下。
我已经将要用的位图导入到工程资源中,所以我可以用:
        CBitmap cbmp;
        cbmp.LoadBitmap(IDB_BMP1);
这样得到一个CBitmap对象。
然后:
        BITMAP bitmap;
        cbmp.GetBitmap(&bitmap);
这样得到一个BITMAP对象,之所以要得到此对象是因为从其中可以得到位图的大小数据。
然后计算得到要在什么位置显示此位图(可以放在一个CRect rect;对象中)。

然后显示此位图,这是最重要的一步:
         CDC dcMemory;
         dcMemory.CreateCompatibleDC(pDC);
         hOldBitmap = dcMemory.SelectObject(&cbmp);
          pDC->BitBlt(rect.left,
                             rect.top,
                             bitmap.bmWidth,
                             bitmap.bmHeight,
                             &dcMemory,
                             0,0,
                             SRCCOPY);
其中pDC是一个CDC*,是将要在其中显示位图的设备环境。

这样位图就已经显示出来了,但是还要释放资源
        cbmp.DeleteObject();
        dcMemory.SelectObject(hOldBitmap);
        dcMemory.DeleteDC();
其中,要将临时设备环境选择入初始时位图,否则将不能正确释放!!

总结:
要在一个设备环境中显示位图,不能直接在上面“画”(目前我是我么觉得的),需要创建一个与之相兼容的新设备环境然后将位图选择入些新设备环境,然后再从些新设备环境中拷备位图以显示到正确的设备环境中。而选入这个动作相当与已经将位图“画在了临时设备环境中”(实际上并没有画,否则就可以直接选入要画图的CDC了),而且选入后位图在临时设备环境中的位置是左上角!

来自http://blog.csdn.net/sgdgoodboy/article/details/2110929

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180290.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android定时器Timer简单使用「建议收藏」

    Android定时器Timer简单使用「建议收藏」Android定时器Timer简单使用Timer简介Timer使用总结Timer简介Timer(计时器)位于java.util包下,可用于创建定时任务,任务可以安排为一次性执行,也可以定期重复执行。每个计时器对象对应一个后台线程(TimerThread)。简单理解为创建Timer对象,对应TimerThread线程循环开始从TaskQueue队列中执行一个TimerTask任务。Timer使用创建Timer对象vartimer=Timer()添加需要执行的任务//创建计

    2022年7月25日
    7
  • c语言中的移位运算符能用于浮点型吗_c语言移位运算符与运算用法

    c语言中的移位运算符能用于浮点型吗_c语言移位运算符与运算用法      移位运算符在程序设计中,是位操作运算符的一种。移位运算符可以在二进制的基础上对数字进行平移。c语言中提供了两种移位运算符:左移运算符:<<右移运算符:>>左移运算符(<<)intmain(void){inta=4;//将a的二进制位向左移动一位intb=a<<1;printf(“%d”,b);return0;}  &n

    2022年10月23日
    0
  • hibernate 未明确定义列 小记[通俗易懂]

    hibernate 未明确定义列 小记[通俗易懂] 在写关联表的实体类时,用测试代码去运行,出现16:00:30,817ERRORJDBCExceptionReporter:72-ORA-00918:未明确定义列16:00:30,833ERRORPersistSpringImpl:244-[PersistImpl][find(queryString,offset,length)]hql:fromcom.esse.pro

    2022年9月1日
    2
  • oracle中sequence是什么意思_consequence的用法

    oracle中sequence是什么意思_consequence的用法在oracle中sequence就是序号,每次取的时候它会自动增加。sequence与表没有关系。1、CreateSequence首先要有CREATESEQUENCE或者CREATEANYSEQUENCE权限。创建语句如下:sql;”>CREATESEQUENCEseqTestINCREMENTBY1–每次加几个STARTWITH1–从1开始计数NOMAXva…

    2022年10月19日
    0
  • 带宽和信道带宽_名词解释信道带宽

    带宽和信道带宽_名词解释信道带宽带宽和信道带宽信道带宽:是信道能通过的最高频率与最低频率之差带宽:表示通信线路所能够传输数据的能力,是数字信道所能传输的最高数据率,单位是bit/s。来自王道教材:

    2022年10月11日
    0
  • pycharm运行结果区显示乱码_windows控制台乱码

    pycharm运行结果区显示乱码_windows控制台乱码解决pycharmTerminal(控制台)乱码问题描述解决方法问题描述环境:ubuntu18.04系统终端:zsh(使用onmyzsh美化过)pycharm2020.3.2解决方法乱码原因还是字体支持的问题,相近的问题见文章ubuntu美化及解决使用zsh后无法运行ROS中的安装PowerLine字体打开pycharm的setting(File->Settings)定位到Editor|ColorScheme|ConsoleFont,修改设

    2025年5月31日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号