请问您知道怎么解封快手号解封吗

用Visual C++显示位图的原理与方法
查看: 663|
摘要: 介绍在VC++环境下显示位图并不是什么新技术,但本文仍然在此&老调重弹&的原因是:(1)这一技术十分重要,它是图像编程的基础,掌握不了这些基本原理也就很难独立开发出符合实际需要的应用程序;(2)许多关于VC++编程的资 ...
实用第一智慧密集
用Visual C++显示位图的原理与方法
在Vc++环境下显示位图并不是什么新技术,但本文仍
然在此“老调重弹”的原因是: (1)这一技术十分重要,它
是图像编程的基础,掌握不了这些基本原理也就很难独立开
发出符合实际需要的应用程序; (2)许多关于Vc++编程
的资料都提供了显示位图(Bitm叩)的实例,但遗憾的是,由
于侧重点的不同使得有关调色板、设备上下文(DC)以及图
形设备接口(GDI)等与位图密切相关的知识要么是很少提
到,要么就是很不全面、一代而过,或者部分内容被放到了
别处,显得支离破碎。这使得许多读者在模仿这些例子“克
隆”出自己的应用程序后,仍感到有许多不解之处存在;
(3)为了显示位图,Wjndows及MFc提供了一些类和函数供
我们利用,熟悉它们的作用对我们编程很有帮助。f
二、基本概念与原理
调色板:调色板的概念必须首先介绍,它在除24位真彩
色显示系统的其它系统中都要用到。尽管多媒体技术的发展
令计算机所能显示的色彩越来越绚丽缤纷,但实际上,自然
界无限种类的颜色目前仍无法在计算机上完全表达出来。现
在最高级的所谓24位“真彩色”的显示系统也只能显示2“
即16,777,216种颜色,当然,这已经完全够用了,因为人眼
还没有能力区分真彩色系统表现出的颜色与大自然中实际颜
色的区别。在这种系统中,每一个像素的值都用红(R)、绿
(G)、蓝(B)三色,每色8位共24位来表示,“24位”
显示系统的名字也由此而来,所以,其像素值就是要显示的
颜色值,显然,此时只需要直接显示就行了,而不需要调色
但对于目前许多4位(16色)或8位(256色)显示系
统来说,其像素值与颜色值并不一一对应,此时,调色板技
术被派上了用场。
调色板的定义如下:它是在16色或256色显示系统中,
由图像中出现最频繁的16或256种颜色组成的颜色表。它依
靠有限种颜色通过组合来实现其它颜色。若某幅图像是使用
调色板的话,那它的像素值就表示颜色在调色板查找表中的
索引号,而不是颜色值。Vc++的MFC为调色板定义了相应
的类CPalette,封装了对调色板操作的一系列函数。
位图:有了调色板的概念,现在我们就可以切入正题、
介绍位图了。
我们在使用计算机时要接触到大量的位图,它是指那些
由一行行、一列列的像素点所组成的一个二维矩形像素点矩
阵,这个矩阵存储了图像信息,组成了一幅幅的图片。可以
毫不夸张地说,正是有了大量位图的存在,才使得当今的程
序界面变得如此丰富多彩。
windows位图有两种:DDB和DIB。前者依赖于设备
(Device Dependent Bitmap) , 与MFc6.0中的CBitmap类
(CGdiobject类的子类)相对应,它们在内存中的结构和位置
依赖于管理它们的设备驱动程序。
DDB不包含颜色信息,显示图像依赖于系统硬件,这使
得它的优点是显示简单、迅速,但也正是由于这一特性,使
得此种位图既不能通过磁盘也不能通过Modem将其传到其它
计算机中实现共享,因此它的应用范围也就越来越小了。
与DDB相比,设备无关位图DIB(Device Independent
Bitm印)是一种外部图像格式,它克服了DDB的缺点,可以
从一台主机通过网络等媒介传到其它主机上实现文件共享。
DIB之所以独立于设备,是因为它包含了一个名为RGBQuAD
的结构,描述了DIB位图对应的逻辑调色板的颜色表,其像
素值是该调色板中的颜色索引值,因此,当一幅DIB传输到
另一台计算机上时,该计算机显示它时只需根据这幅DIB的
颜色表“按图索骥”就行了,而不必关心是否与当前的硬件
配置相吻合。
图l一幅DIB图像
计算机生成的所有以.bmp为后缀结尾的文件都代表
DIB,比如我们在windows的“画图”中生成的图像(见图
1),DIB格式有单色、16色、256色以及24位真彩色等多
种。其定义如图2所示:
e酾如l|etP÷赫啦曲季辫硅s-:交_赫i雒妇啦_卿1.1:39
实用第一智慧密集
图2 DIB文件结构
以上几部分在windows.h当中都有相应的定义。有关DIB
文件结构的更详细定义读者可参考有关资料。
遗憾的是,MFC中没有专门处理DIB位图的类,因此,
要想利用Vc++对DIB进行操作,那就要么直接调用win32
SDK的API函数,要么就只能自己定义专门处理DIB的类。
而由于楣关的API函数也实在有限,所以一般处理位图的应用
程序都采用了后一种方法。
DC:Dc(Device CDnten)被称作设备上下文,windows
的设备无关性使得我们无法直接对硬件进行操作,因此必须借
助它来连接应用程序和设备驱动程序,以便实现诸如访问内存
等功能。DC的作用如图3所示:
应用耕曼§Dc堕豫设绷动i莹謦塑‰显示数据璺至‰锵、卿机
图3 DC的作用
具体说来,设备上下文详尽的指定了诸如显示器、打印
机、绘图机及Modem等物理设备的特征,是一个保存绘图界
面属性的数据结构。此外,windows中还有一些特殊的DC,
如代表位图的设备上下文Memory Dc,只有通过它,应用程序
才能在位图中绘图。
对应于Dc,Vc++设计了相应的设备环境类cDc,包括
几个派生类,其相互关系及每个派生类的作用见图4所示。
cc蛐c攒I董理成摄国嵌茌喜户区内的煳操作·
∞c类2‰曲蹴鲐蕾理J襄员滋始个密口区攮I为曲缡撮作·
l cPa岫c类。晌厦wM.PAl}玎柑息,重菩蓦一区域,像i芷图形完整.
~cM如^1奶c樊·代衰豳元文件Dc.
图4 CDc类及其派生类
GDI:最后,有关GDI的概念也作一下介绍。GDI指
windows的图形设备接口(G’aphics Deviee Interfhce),是win—
dows用来管理图像操作的~个与设备无关的模块,应用程序
通过GDI向输出设备绘图。上面介绍的DC就属于GDI所有,
其它实现位图必不可少的工具,如厕笔、刷子、调色板等也都
要用该模块来管理,windows中许多有关图像操作的API函数
也是由GDI来提供的。
MFc中的Ccdj0姊eet类封装了GDI中的部分实体(见图
5)。但请注意,被封装的实体只是一部分,而并不像cDc类
与DC之间有一一对应关系。
cG出0bj位t类
图5 cGdiObject类及其派生类
.t jij:’。j√i 毫捆端穗壹秘学缝势:·.:叠啤l。≮j:i
以上两个类共同实现了cDI的功能。
有了调色板、位图、DC、GDI等几个基本概念,下面我
们就可以对实现显示位图的步骤进行描述了。
三、实现方法
显示DDB的方法:
图6给出了用Vc++实现显示DDB位图的一般方法。其
中上排文字表示实现步骤,下排括号中的文字表示实现这一步
骤的具体模块或函数。
加入位圈瓷豫—,定义cBt脚荚的对象—’调用L∞睡b印()爱入位朗—..
‘矗立_■, c挂瞳葡t茸它菇' t炎的招瞻化齑纛申'
创麓与显示Dc相羹客的黼Dc—'将曼选搏的位圉选入肉降Dc—◆
‘撬啊尧的O吐)螬#()苗囊中) ‘s目-F-∞■n‘,苗囊)
从陌DC搏贝至显承饼卜+对位髓港行放大藏压缩簪恃黪瓣作—◆照承
‘Ba矗H‘'苗敬’ ‘孰州£堪h函纛' t量幕■’
圈6显示DDB的~般方法
下文给出一段具体的程序代码,与图6相对应:
CBltmap mybltmap //定义CBItmap类的对象
CDC mvdcMemory: //定义CDC类的对象
mybitmap.LoadBitmap(IDB—MY引TMAP): //装入ID号为
IDBjuYB盯MAP的位图
mydcMemory.CreateCompatIbleDC(pDC): //创建与显示
DC相兼容的内存DC
mydcMemory.SeIectObJect(&mybitmap): //将选定的位
图选人内存DC
pDC一>BItB Ct(10,10,50.50,&mydeMemOry,O,O. SRCCOPY)://
从内存DC向显示DC复制10,10表示显示位置
为窗口左上角.向右向I、.各偏霄10:50.50表示位图大小,
单位为像索:O.0指出源位图的起始位置:SRCCOPY表示直接
将源位图拷『J1到目的位图.不作修改.
PDC一>Stretch引t(10.10,50。50,&mydeMemDry.0.O,100,
100.SRCCOPY).
//扩大或缩小位图.其中100,100就表示将原来50 t 50大小
的位图扩大为100女100,其它参数与BItBIt()中的相同.
BitBlt()函数通过最后一个参数来表明对位图的颜色操作
方式,如上例中的SRcc0PY意思是直接拷贝,其它还有
BLACKNEss(变为黑色)、wHrrENESS(变为白色)、DE譬
TINVERT(翻转目的位图)等多种方式,有兴趣的读者可参考相
显示DIB的方法:
Dm涉及到了调色板,所以显示DlB的步骤当中必须包含
生成、设置以及实现调色板的内容(24位真彩色系统除外)。
大体上来说,照示DIB有两种方法:
方法一直接利用API函数。
法l:可以借助DDB来显示DIB。此时需要将Dm“转
换”成DDB,因此就要先用c∞BteDIBi细印()创建一个DDB。
然后调用sclDIBitIllap()将DIB拷贝到DDB当中,再将DDB选
进内存Dc,最后调用BitBlt()函数在显示屏上显示。其总体
思路与显示DDB的方法很类似。
一.专渣一
实用第一智慧密集
l读入姻文件的格式僖一‰遗逻辑诩色撮(其它位图)—+创建调色扳
I—◆设I调色扳—+显示调色板———◆显示位圈
‘c棚山tI.0函数’
s山ct妯t姗R妇Pm城' ‘B删I融sh帅∞啼bo)
这部分给出了一个将位图贴在按钮上的例子,因为MFc
的cBitlIl印Button类的存在,将指定的位图与按钮联系了起
来,并且封装了具体的实现代码,因此使得我们实际要做的工
作很少。我们提出这样一个例子的目的是为了说明位图的一种
步骤1在Appwizard下生成一个基于对话框的工程
(Dialog Based Project),命名为”位图按钮”,其它全部选用
默认选项。
步骤2生成位图资源。对于一个按钮,要生成的位图资
源有两个,以便在按钮被选中以及被放开时显示不同的状态。
因此,首先在“画图”程序中打开一幅自己喜欢的位图
(.bmp)文件,由于是用贴在按钮上,所以它不必太大(如
图8所示),存在BmpButton工程下的子目录res下,命名为
bunonUP。bmp,作为按钮弹起时的状态;
对位图进行适当处理(如“图像”菜单下的“反色”算
法,见图9),以buttonDN.bmp为名字存在同一目录下,作
为按钮弹被按下时的状态。
图9反色的效果
步骤3引入资源文件。在VC++的Reso眦eView当中选
择标题Dialog Resource并单击右键,在弹出菜单中选择import⋯
项,然后分别从res目录下引入步骤二中得到的两个位
图。分别将其ID号改为“YAH00u”和“YAHOOD”,后者
对应反色后的位图。
注意,我们这里是通过名字来标识资源,所以上述两个
ID号一定要加引号。
步骤4在对话框中加入一个按钮(Bunon)控件,ID号
改为IDcJAH00,C印tion改为Yahoo,然后还必须将按钮的
styles属性(胁penies)中的“0wner D功w”项选中。
步骤5在位图按钮Dlg.h的类声明部分中加入以下代
CBitmapButton m_bmpButton://生成C8jtmapBut—
ton类的一个对象:
步骤6在位图按钮Dlg.cpp的0nInitDialog()函数中加入
以下代码:
VERIFY(mjmpButton AutoLoad(IDC—yAHOO,th Js)):
//调用AutoLOad{)函数自动将按钮与资源联系起来:为了在
对话榧生成时完成这一工作,这旬代码加在了On㈨tDialog()
步骤7编译,运行。结果如图10和图ll所示:
图10程序运行结果
图11按钮被按下去时的情形
这个按钮除了将“朴素”的外表改头换面以外,与普通按
钮一样,可以实现同样的功能。
以上程序在Visual c++6.0中调试通过。
(收稿日期:日)
e菇满菇釜黼茹毒罐。鞴越:辩斌蔷≤蠢茹藤:i黼l:F 41】
Copyright &25262728293031123456789101112131415161718192021222324252627282930311234
随笔 - 105
随笔分类(109)
随笔档案(105)
玩音频播放器的猫咪
Useful Webs
积分与排名
阅读排行榜
评论排行榜2000年6月 总版技术专家分月排行榜第一2000年5月 总版技术专家分月排行榜第一2000年4月 总版技术专家分月排行榜第一
2000年3月 总版技术专家分月排行榜第二
2000年11月 Delphi大版内专家分月排行榜第一
2000年11月 VC/MFC大版内专家分月排行榜第三
2000年11月 Delphi大版内专家分月排行榜第一
2000年11月 VC/MFC大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。&&&meta file
的翻译结果:
查询用时:0.192秒
&在分类学科中查询
Application of Windows MetaFile
Windows图元文件的应用
Accessing and application of information about metafile in project
图元文件信息的存取与在工程中的应用
The description and operation of product structure information based on XML,process of metafile in XML document and storage methods of XML document in relational database are introduced in the implementation of an actual welding process CAPP system.
结合具体的焊接工艺CAPP系统,介绍了基于XML的产品结构信息描述、操作,图元文件在XML文档中的处理及XML文档的数据库存储等关键技术。
All kinds of operations of window metafile were realized with CmetaFileDC class encapsulated in MFC.
利用MFC中已经封装好的类CmetaFileDC能实现该图元文件的各种操作。
Image identification and storage and its application in enhanced metafile
增强图元文件(EMF)的识别与存储
Development of the editor for computer graphics metafile in MS windows/NT operating systems.
基于MS Windows/NT的计算机图形元文件编辑器的研制
Five kernel data APIs (metafile data、 geometry data 、 attribute data 、 style data andhost software data)are designed and realized to control and manage the progress of dataexchange.
3、通过对数据的元文件数据、几何数据、属性数据、符号信息以及宿主软件信息等五类内核数据接口的设计和实现来控制和管理数据交换的过程。
The form of windows metafile is analyzed and the viewing method of windowsmetafile under Java is introduced. The changing program is given by a practial example.
分析了Windows元文件(WMF)的格式,在此基础上介绍了如何将Windows元文件在Java环境下显示出来的方法,并通过实例给出了相应的转换程序。
Through enhancement mode meta file and device independent bitmap,and with programming,support of Open GL graphic print and Clip board is obtained in windows.
通过增强型元文件和设备无关位图两种方式 ,采用编程的方法在 Windows上实现了 Open GL图形的打印和剪贴板的支持。
PlotEasy,a petroleum exploration oriented mapping system,is an application subsystem in NEWS integrated reservoir interpretation system. It consists of three parts:graphics edit,computer graphics metafile generation and interpretation,and raster plotting.
Plot Easy油气勘探成图软件是NEWS油藏综合解释系统的一个专业应用子系统,它主要由图形编辑、计算机图形元文件(CGM)生成和解释、光栅绘图3部分组成。
Development of the editor for computer graphics metafile in MS windows/NT operating systems.
基于MS Windows/NT的计算机图形元文件编辑器的研制
Five kernel data APIs (metafile data、 geometry data 、 attribute data 、 style data andhost software data)are designed and realized to control and manage the progress of dataexchange.
3、通过对数据的元文件数据、几何数据、属性数据、符号信息以及宿主软件信息等五类内核数据接口的设计和实现来控制和管理数据交换的过程。
The form of windows metafile is analyzed and the viewing method of windowsmetafile under Java is introduced. The changing program is given by a practial example.
分析了Windows元文件(WMF)的格式,在此基础上介绍了如何将Windows元文件在Java环境下显示出来的方法,并通过实例给出了相应的转换程序。
Through enhancement mode meta file and device independent bitmap,and with programming,support of Open GL graphic print and Clip board is obtained in windows.
通过增强型元文件和设备无关位图两种方式 ,采用编程的方法在 Windows上实现了 Open GL图形的打印和剪贴板的支持。
PlotEasy,a petroleum exploration oriented mapping system,is an application subsystem in NEWS integrated reservoir interpretation system. It consists of three parts:graphics edit,computer graphics metafile generation and interpretation,and raster plotting.
Plot Easy油气勘探成图软件是NEWS油藏综合解释系统的一个专业应用子系统,它主要由图形编辑、计算机图形元文件(CGM)生成和解释、光栅绘图3部分组成。
Graphics and image disposal comprises drawing and handling of basal graphics, read and write of metafile with PLT format and BMP format. Output control comprises interpolation, the movement of electromotor andon-off of laser.
图形图像处理实现了基本图元的绘制、图形操作、PLT 格式图形文件和 BMP 格式图像文件的读取和保存; 输出控制包括软件实现插补器、电机的运动控制和激光器的开关等内容。
Every device such as generator, transformer, load, transmission line and etc are constructed by fundamental metafile in the background monitoring system. Real-time and history database are build to offer data support for the dynamic curve displaying, history signal and controlling record storing management, reports forms printing, off-line data analyzing and etc.
在后台监控系统中,利用基本图元对象构建了发电机、变压器、负荷、线路等各设备单元,并建立了实时数据库和历史数据库,为实时动态显示变量曲线,历史信号、操作记录的存储管理,报表打印,离线数据分析等提供了数据支持。
This paper presented a method for displaying the VAX GKS graphic on TV projector via IBM PC com-puter,The VAX GKS metafile was transmitted to IBM PC with serial communicatioh,then interpreted byIBM PC with VGA card.
提出了一种通过18MPC机将VAXⅡ计算机GKS图形在大屏幕投影机上显示的方法。
查询“meta file”译词为用户自定义的双语例句&&&&我想查看译文中含有:的双语例句
为了更好的帮助您理解掌握查询词或其译词在地道英语中的实际用法,我们为您准备了出自英文原文的大量英语例句,供您参考。&&&&&&&&&&&& Through enhancement mode meta file and device independent bitmap,and with programming,support of Open GL graphic print and Clip board is obtained in windows.Since saved in the mode of plotting record,enhancement mode meta file has more advantages of inaliasing.small memory occupation and editable plotting record than bitmap. 通过增强型元文件和设备无关位图两种方式 ,采用编程的方法在 Windows上实现了 Open GL图形的打印和剪贴板的支持。由于增强型元文件是以绘制记录储存的 ,与位图相比具有输出图形不失真、占用磁盘空间小、绘制记录可编辑等优点&nbsp&相关查询
在英文学术搜索中查有关的内容
在知识搜索中查有关的内容
在数字搜索中查有关的内容
在概念知识元中查有关的内容
在学术趋势中查有关的内容
2008 CNKI-中国知网
北京市公安局海淀分局 备案号:110 1081725
&2008中国知网(cnki)
中国学术期刊(光盘版)电子杂志社}

我要回帖

更多关于 快手安全中心解封 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信