vc6.0 图片显示(个人笔记)
公司项目,要求做一个设备运行的动画。我首先做了一个图片,发现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 图片显示(个人笔记)相关推荐
- vc6.0c语言五子棋程序,哪位大虾可以给我个VC6.0下用C语言编的五子棋,要有流程图...
五子棋 代码 VC6.0 qq_29018467112015-06-14 五子棋 (用C语言编写五子棋游戏) rannianzhixia170392017-04-20 基于easyx图形的五子棋游戏 ...
- 激活VC6.0行号插件
激活VC6.0行号插件 1.首先在win7下找到可执行程序"cmd.exe"(其位置在"C:\Windows\System32"),右键选择以管理员身份运行: ...
- 2017-2-15从0开始前端学习笔记(HTML)-图片-表格-表单
2017-2-15从0开始前端学习笔记-图片-表格-表单 标签 图片 图片<img src="#" alt="文本说明 不能加载图片时显示" title= ...
- 神马笔记 版本2.10.0——图片查看器
神马笔记 版本2.10.0--图片查看器 一.目标 二.下载地址 三.功能介绍 四.开发过程回顾 五.笔记元素一览 六.下一版本开发计划 七.新版本规划 八.历史版本回顾 九.帮助和反馈 十.Fina ...
- Java踩坑笔记 —— base64转换为图片后图片显示不全
Java踩坑笔记 -- base64转换为图片后图片显示不全 前言 解决思路 案例代码 结束语 前言 最近在开发项目中,发现base64转换图片时,出现了图片显示不全,例如如下这样 可以明显看到图片部 ...
- VC6.0显示代码行号
VC6.0是一款比较稳定的功能强大的IDE,目前也有很多人在使用.但美中不足的是它不能像其他IDE那样显示行号. 这里需要用到一个插件VC6LineNumberAddin,下载地址:http://fi ...
- 基于STM32CubeMX的stm32f103c6t6液晶0.96OLED显示字母数字汉字图片显示
在STM32CubeMX里建工程,利用HAL库stm32F103c6t6连0.96寸的OLED液晶显示数字字母汉字图片.stm32f103c8t6,stm32f103zet6系列都可以参考下面的即可成 ...
- IE8.0中显示不出来图片其他浏览器都可以显示
IE8.0中显示不出来图片其他浏览器都可以显示 快速列举下相关要素: -非 ie浏览器 正常显示图片: -小于等于 原生ie 8 以下无法正常展现: -非图片 懒加载检测机制问题: -直接在浏览器中访 ...
- 基于arduino的ESP32 学习笔记(六)LVGL文件系统移植,中文字库和图片显示
前言 本文的目的是为了给将要制作的ESP32手环做技术储备 记录移植LVGL文件系统,制作LVGL中文字库,将图片和字库放在SD卡里,通过移植好的LVGL文件系统,读取SD卡中的中文字库和图片,并显示 ...
最新文章
- python算法与数据结构-循环链表(41)
- Android SrcollView嵌套recyclerView的使用
- codeforces280 C. Game on Tree(期望)
- Redis牛逼!轻松实现实时订阅推送
- word文档的尺寸和字号对照表
- maven-surefire-plugin常用配置
- GNN学习笔记(三) Graph Neural Network概述
- MATLAB编程之PTB:实验流程
- 微信公众号-模板消息管理
- 苹果11微信表格服务器地址怎么填,苹果实用技巧:iPhone11手机微信打字怎么换行...
- 现在国内的网站用户行为数据分析工具都有哪些?-宋星
- 怎样实现cmd命令窗口的快速复制粘贴操作
- 代码生成器-设计心得
- 为什么有些人钱花了而赚不到钱呢?
- ubuntu校准时间
- qml显示gif动画
- 云端(Cloud)多租户网络技术
- 制作flash动画的心得
- JavaScript教程——从入门到精通-石川-专题视频课程
- 装完linux硬盘有密码吗,deepin 15.11安装过程中全盘安装/全盘加密后查看磁盘信息...
热门文章
- OPPO Reno2系统体验!ColorOS6.1智美双全,带来不同的操作乐趣
- 英语国际音标之辅音发音技巧
- 个人项目:中小学数学卷子自动生成程序——队友代码点评
- Office2022个人家庭版
- 服务器宠物系统,你们升级我抓宠,PVX也能从剑网三怀旧服的升级热潮中找到快乐!...
- 北京地铁运营线路图,1号线,2号线,5号线,8号线,10号线,13号线,八通线和机场快轨
- 莫辞更坐弹一曲,为君翻作《琵琶行》——python文件I\O
- 快消品b2b电子商务网站建设方案
- [流表] ovs常规操作
- sp_addlinkedserver oracle,SP_addlinkedserver 小结 (oracle,sql server,access,excel)