win3.2 7.3 创建和使用位图 - 创建和使用位图

本文详细解析了在程序设计中如何使用位图和设备环境进行绘图操作,包括位图的创建、初始化以及如何利用GDI函数进行绘图。文章强调了CreateCompatibleDC和CreateCompatibleBitmap函数的重要性,以及正确使用窗口客户区的hDC作为参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个很好理解,前面,我们设备环境是屏幕,直接画在屏幕上;现在,我们的设备环境是位图,
直接画在位图上,然后再显示在屏幕上,显示出来同样的效果。
  1. 设备环境:
    所有绘画函数的操作对象都是“设备环境”,对位图操作也不例外。为了对位图使用GDI函数,需要使用 CreateCompatibleDC函数为位图建立一个DC,然后使用 SelectObject 函数将位图选入这个DC中,这样,所有对这个DC的绘图操作实际上就是在操作这个位图。每一个操作的位图都需要单独为他创建一个DC。

  2. 创建时间:
    程序中常常使用在资源中预定义的位图,但也有使用未初始化的位图的情况,如例子程序中的位图和时钟位图一开始就是未初始化的,它们是程序开始运行后才被创建的。

  3. 建立未初始化的位图 函数:
    在这里插入图片描述

    1. 创建一个位图需要的参数是高度、宽度以及颜色深度,要创建位图必须得知这些参数。使用 CreateCompatibleBitmap创建位图的时候,参数中有一个hDC,这是个参考hDC,也就是说,新位图的颜色深度和 hDC 对应的“设备环境”的颜色深度相同(注意:有个 hDC 参数的意识并不是将创建的位图选入这个 hDC)
    2. CreateBitmap 函数则是直接在参数 dwPlanes 和 dwBitsPerPel 中指定了颜色的深度。两个函数的 dwWidth, dwHeight 参数指定了创建的位图的宽度和高度。
  4. 使用例子:

    1. 例子程序的 _CreateBackGround 子程序中,为了建立背景图片和时钟图片,需要建立两个未初始化的位图及它们的DC,所以程序一开始用 GetDC 函数获取主窗口的 hDC 来当做参考 DC,然后用CreateCompatibleDC 函数建立两个DC(句柄放在全局变量 hDcBack 和 hDcClock中),并用 CreateCompatibleBitmap 建立两个位图(句柄放入hBmpBack 和 hBmpClock中),接下来用 SeletObject 将这个两个位图选入新建的hDC中。
    2. 创建背景图片的过程中还要用到资源中的背景图片、边框图片和边框的遮掩图片,对于这些图片,程序用 LoadBitmap 函数状如,并使用 CreateCompatibleDC 为每一个图建立一个DC。
    3. 对于不在使用的位图,要用 DeleteObject 函数将他们删除。所以在子程序的最后,使用 DeleteObject 函数将临时使用的位图句柄删除,并使用 DeleteDC 将操作这些位图的hDC删除。
  5. 注意:
    操作未初始化的位图需要用到 CreateCompatibleDC 和 CreateCompatibleBitmap 函数,初学者常常犯的错误使用 CreateCompatibleDC 返回的 HDC 当做 CreateCompatibleBitmap 函数的参考 hDC,这样的结果所使用的位图都是单色的,正确的做法是两个函数的参考 hDC 都使用 窗口客户区的 hDC。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值