公司项目,要求做一个设备运行的动画。我首先做了一个图片,发现vc6.0上的picture控件不支持真彩色

显示。于是个人在网上搜了很多资料,这里做一个关于vc6.0图片显示的总结。方便自己,也方便他人。

总结的工程代码下载地址:http://download.csdn.net/detail/yongan1006/9507347

这篇文章,我分为以下几步:

1.如何显示256色以下的图片

2.bmp格式图片文件介绍

3.显示真彩色图片

4.其它方面

1.如何显示256色以下的图片

1.1使用picture控件。将picture控件的属性改成位图。插入位图资源,并将位图资源ID,选到picture控件

属性中(示例工程代码中,右键DIALOGUE1)

1.2 使用消息wm_ctlcolor,在这个消息中返回一个自定义的画刷。(示例工程中,主界面的背景显示

的就是一幅图)。这种方法也可以显示真彩色的位图。真彩色的位图,也可以插入到位图资源编辑器

中。只是资源编辑器无法显示。但是不影响后面的程序对其ID的引用。

这种方法有局限性。使用这个消息的控件有CTLCOLOR_DLG 对话框
CTLCOLOR_EDIT 编辑框
CTLCOLOR_LISTBOX 列表框
CTLCOLOR_MSGBOX 消息框
CTLCOLOR_SCROLLBAR 滑动条
CTLCOLOR_STATIC 静态文本框、矩形等。

此方法不适用于按纽控件。

2.bmp格式图片文件介绍

这里上一个图片,更加具体的介绍请参看网址:http://www.docin.com/p-1304460575.html

还有一个要说明的是,真彩色的bmp图片,调色板这一项是没有的。

3.显示真彩色图片

我的示例工程中,右键DIALOGUE2,展示的是如何用picture控件来显示真彩色图片。右键DIALOG3展示的

是如何用cdc来绘制真彩色图片。

3.1 picture控件来显示真彩色图片。

这里我是从cstatic上继承出了一个子类CPicBtn。子类中重写了函数PreSubclassWindow()。本来我是想

初始化一些东西,这些代码最好写在类似于onInitDialogue中消息响应函数中。可惜cstatic上没有

WM_INITDIALOGUE的类似消息。

网上大牛,可写了一些总结关于PreSubclassWindow()和PreclassWindow()的。这里我就贴个结论出来。

具体参看:http://blog.csdn.net/liu_cheng_ran/article/details/7571843

3.2 cdc来绘制真彩色图片

代码中在WM_PAINT消息响应函数中,使用了三种方法。分别调用了函数BitBlt(),StretchBlt(),

StretchDIBits()。

BitBlt()只是粘贴了原图,StretchBlt()函数可以对原图进行拉伸和缩放,以适应显示窗口的大小。

它们的操作对象是加载了位图的cdc对象。 StretchDIBits()操作的是原图的内存。它需要bmp的

位图数据。要求的参数多一些。但是这些信息,都可以通过CBitmap的对象

方法GetBitmap(),GetDIBits()直接或间接获取。

另外注意到调用StretchBlt()函数之前 调用了 SetStretchBltMode()函数。它的作用是防止颜色失真。

但是调用SetStretchBltMode()函数,还需要再调用SetBrushOrgEx()保证cdc工作的初始位置正确。

4.其它方面

写程序时,会需要一些转化。

4.1  CDC和HDC的区别与转换

获取cdc

CDC* pDC
pDC=GetDC();

获取hdc

HDC hDC;
hDC=pDC->m_hDC;

hDC=GetSafeHDC(pDC);

hDC=::GetDC(HWND handle)

转化
CDC* pDC
HDC hDC;
pDC=Attach(hDC);
hDC=GetSafeHDC(pDC);
pDC->m_hDC==hDC

4.2窗口ID,句柄,指针三者相互转换函数
ID--HANDLE--HWND三者之间的互相转换
===============
id->句柄
hWnd = ::GetDlgItem(hParentWnd,id);
===============
id->指针
CWnd::GetDlgItem();
===============
句柄->id
id = GetWindowLong(hWnd,GWL_ID);
===============
句柄->指针
CWnd *pWnd=CWnd::FromHandle(hWnd);
===============
指针->ID
id = GetWindowLong(pWnd->GetSafeHwnd,GWL_ID);
=================
指针->句柄
hWnd=cWnd.GetSafeHandle() or mywnd->m_hWnd;

vc6.0 图片显示(个人笔记)相关推荐

  1. vc6.0c语言五子棋程序,哪位大虾可以给我个VC6.0下用C语言编的五子棋,要有流程图...

    五子棋 代码 VC6.0 qq_29018467112015-06-14 五子棋 (用C语言编写五子棋游戏) rannianzhixia170392017-04-20 基于easyx图形的五子棋游戏 ...

  2. 激活VC6.0行号插件

    激活VC6.0行号插件 1.首先在win7下找到可执行程序"cmd.exe"(其位置在"C:\Windows\System32"),右键选择以管理员身份运行: ...

  3. 2017-2-15从0开始前端学习笔记(HTML)-图片-表格-表单

    2017-2-15从0开始前端学习笔记-图片-表格-表单 标签 图片 图片<img src="#" alt="文本说明 不能加载图片时显示" title= ...

  4. 神马笔记 版本2.10.0——图片查看器

    神马笔记 版本2.10.0--图片查看器 一.目标 二.下载地址 三.功能介绍 四.开发过程回顾 五.笔记元素一览 六.下一版本开发计划 七.新版本规划 八.历史版本回顾 九.帮助和反馈 十.Fina ...

  5. Java踩坑笔记 —— base64转换为图片后图片显示不全

    Java踩坑笔记 -- base64转换为图片后图片显示不全 前言 解决思路 案例代码 结束语 前言 最近在开发项目中,发现base64转换图片时,出现了图片显示不全,例如如下这样 可以明显看到图片部 ...

  6. VC6.0显示代码行号

    VC6.0是一款比较稳定的功能强大的IDE,目前也有很多人在使用.但美中不足的是它不能像其他IDE那样显示行号. 这里需要用到一个插件VC6LineNumberAddin,下载地址:http://fi ...

  7. 基于STM32CubeMX的stm32f103c6t6液晶0.96OLED显示字母数字汉字图片显示

    在STM32CubeMX里建工程,利用HAL库stm32F103c6t6连0.96寸的OLED液晶显示数字字母汉字图片.stm32f103c8t6,stm32f103zet6系列都可以参考下面的即可成 ...

  8. IE8.0中显示不出来图片其他浏览器都可以显示

    IE8.0中显示不出来图片其他浏览器都可以显示 快速列举下相关要素: -非 ie浏览器 正常显示图片: -小于等于 原生ie 8 以下无法正常展现: -非图片 懒加载检测机制问题: -直接在浏览器中访 ...

  9. 基于arduino的ESP32 学习笔记(六)LVGL文件系统移植,中文字库和图片显示

    前言 本文的目的是为了给将要制作的ESP32手环做技术储备 记录移植LVGL文件系统,制作LVGL中文字库,将图片和字库放在SD卡里,通过移植好的LVGL文件系统,读取SD卡中的中文字库和图片,并显示 ...

最新文章

  1. python算法与数据结构-循环链表(41)
  2. Android SrcollView嵌套recyclerView的使用
  3. codeforces280 C. Game on Tree(期望)
  4. Redis牛逼!轻松实现实时订阅推送
  5. word文档的尺寸和字号对照表
  6. maven-surefire-plugin常用配置
  7. GNN学习笔记(三) Graph Neural Network概述
  8. MATLAB编程之PTB:实验流程
  9. 微信公众号-模板消息管理
  10. 苹果11微信表格服务器地址怎么填,苹果实用技巧:iPhone11手机微信打字怎么换行...
  11. 现在国内的网站用户行为数据分析工具都有哪些?-宋星
  12. 怎样实现cmd命令窗口的快速复制粘贴操作
  13. 代码生成器-设计心得
  14. 为什么有些人钱花了而赚不到钱呢?
  15. ubuntu校准时间
  16. qml显示gif动画
  17. 云端(Cloud)多租户网络技术
  18. 制作flash动画的心得
  19. JavaScript教程——从入门到精通-石川-专题视频课程
  20. 装完linux硬盘有密码吗,deepin 15.11安装过程中全盘安装/全盘加密后查看磁盘信息...

热门文章

  1. OPPO Reno2系统体验!ColorOS6.1智美双全,带来不同的操作乐趣
  2. 英语国际音标之辅音发音技巧
  3. 个人项目:中小学数学卷子自动生成程序——队友代码点评
  4. Office2022个人家庭版
  5. 服务器宠物系统,你们升级我抓宠,PVX也能从剑网三怀旧服的升级热潮中找到快乐!...
  6. 北京地铁运营线路图,1号线,2号线,5号线,8号线,10号线,13号线,八通线和机场快轨
  7. 莫辞更坐弹一曲,为君翻作《琵琶行》——python文件I\O
  8. 快消品b2b电子商务网站建设方案
  9. [流表] ovs常规操作
  10. sp_addlinkedserver oracle,SP_addlinkedserver 小结 (oracle,sql server,access,excel)