本文主要是介绍重温WIN32 API ------ 窗口上绘制位图文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1 基本思路
做界面仿真时,经常需要在窗口上贴图,随着图片数量的增多,通过资源文件中添加位图的方式会变得越来越不可控。所以本着“资源与程序分离“的原则,还是使用外部位图文件更加清晰明了。
那么如何管理位图的贴图位置呢?如果写死到程序代码中,则又会导致耦合行过高的问题。容易想到解决方法有两个,一是使用一个单独的xml文件来记录图片文件名称和贴图位置的关系,二是直接把贴图位置信息包含进位图文件的文件名中。本文采用更加简单的后者,位图文件名格式规范为:description_xxx-yyy.bmp ,其中xxx为贴图时相对于所在窗口的x坐标,yyy为贴图时相对于所在窗口的y坐标,例如:发动机按钮_100-200.bmp,表示贴图时,目的坐标点为(100,200)。
至于贴图的实现,考虑到只需要支持bmp一种格式即可,所以采用GDI库完成。考虑到一个位图文件可能会被贴图多次(例如刷新的时候),所以实现时没有直接SetDIBitsToDevice(),而是首先把DIB通过CreateDIBitmap()转化为DDB,然后保存这个DDB,这样以后每次贴图时,只需要BitBlt()这个DDB就可以了,提高了效率。
2 代码实现
BitmapHelper.h
#pragma once
/********************************************************************************BitmapHelper 贴图助手
功能描述:根据位图文件名,把位图文件读入并贴到指定窗口,为提高效率对象内部
这篇关于重温WIN32 API ------ 窗口上绘制位图文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!