![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
vc 学习--图行图像处理
xmcai123
学无止境
展开
-
第十五章 与设备无关的位图(DIB 和 DDB 的结合2)
<br />与SetDIBits函数相似的函数是GetDIBits,您可以使用此函数把DDB转化为DIB:int WINAPI GetDIBits (<br /><br /> hdc, // device context handle<br /><br /> hBitmap, // bitmap handle<br /><br /> yScan, /原创 2011-04-22 01:36:00 · 505 阅读 · 0 评论 -
第五章 图像基础(矩形、区域和剪裁)
<br />矩形、区域和剪裁<br />Windows包含了几种使用RECT(矩形)结构和「区域」的绘图函数。区域就是屏幕上的一块地方,它是矩形、多边形和椭圆的组合。<br />矩形函数<br />下面三个绘图函数需要一个指向矩形结构的指针:FillRect (hdc, &rect, hBrush) ;<br /><br />FrameRect (hdc, &rect, hBrush) ;<br /><br />InvertRect (hdc, &rect) ;<br /><br />在这些函数中,rect原创 2011-04-22 01:50:00 · 628 阅读 · 0 评论 -
第五章 图像基础(GDI 映像方式)(1)
<br />GDI 映像方式<br />到目前为止,所有的程序都是相对于显示区域的左上角,以图素为单位绘图的。这是内定情况,但不是唯一选择。事实上,「映像方式」是一种几乎影响任何显示区域绘图的设备内容属性。另外有四种设备内容属性-窗口原点、视端口原点、窗口范围和视端口范围-与映像方式密切相关。<br />大多数GDI绘图函数需要坐标值或大小。例如,下面是TextOut函数:TextOut (hdc, x, y, psText, iLength) ;<br /><br />参数x和y分别表示文字的开始位置。参原创 2011-04-22 01:48:00 · 585 阅读 · 0 评论 -
第十七章 文字和字体(有趣的东西)
有趣的东西根据外形轮廓表示字体字符提供了将字体与其它图形技术相结合的可能性。前面我们讨论了旋转字体的方式。这里讲述一些其它技巧。继续之前,先了解两个重要的预备知识:绘图路径和扩展画笔。GDI绘图路径绘图路径是储存在GDI内的直线和曲线的集合。绘图路径是在Windows的32位版本中发表的。绘图路径看上去类似于区域,我们确实可以将绘图路径转换为区域,并使用绘图路径进行剪裁。但随后我们会发现两者的不同。要定义绘图路径,可先简单呼叫BeginPath (hdc) ;进行该呼叫之后,所画的任何线(例如,直线、弧及贝原创 2011-04-22 01:33:00 · 453 阅读 · 0 评论 -
第五章 图像基础(设备内容)
<br />设备内容<br />在开始绘图之前,让我们比第四章更精确地讨论一下设备内容。<br />当您想在一个图形输出设备(诸如屏幕或者打印机)上绘图时,您首先必须获得一个设备内容(或者DC)的句柄。将句柄传回给程序时,Windows就给了您使用设备的权限。然后您在GDI函数中将这个句柄作为一个参数,向Windows标识您想在其上进行绘图的设备。<br />设备内容中包含许多确定GDI函数如何在设备上工作的目前「属性」,这些属性允许传递给GDI函数的参数只包含起始坐标或者尺寸信息,而不必包含Windows原创 2011-04-22 01:53:00 · 499 阅读 · 0 评论 -
第十三章 使用打印机(打印图形和文字1)
<br />打印图形和文字<br />在一个Windows程序中,打印所需的额外负担通常比FORMFEED程序高得多,而且还要用GDI函数来实际打印一些东西。我们来写个打印一页文字和图形的程序,采用FORMFEED程序中的方法,并加入一些新的东西。该程序将有三个版本PRINT1、PRINT2和PRINT3。为避免程序代码重复,每个程序都用前面所示的GETPRNDC.C文件和PRINT.C文件中的函数,如程序13-4所示。程序13-4 PRINT<br />PRINT.C<br /><br />/*---原创 2011-04-22 01:45:00 · 926 阅读 · 0 评论 -
第十四章 位图和Bitblt(GDI 位图对象2)
程序14-6 HELLOBIT<br />HELLOBIT.C<br /><br />/*-----------------------------------------------------------------------<br /><br /> HELLOBIT.C -- Bitmap Demonstration<br /><br /> (c) Ch原创 2011-04-22 01:42:00 · 391 阅读 · 0 评论 -
第十四章 位图和Bitblt(GDI 位图对象1)
<br />GDI 位图对象<br />我在本章前面已提到过Windows从1.0开始就支持GDI位图对象。因为在Windows 3.0发表了设备无关位图,GDI位图对象有时也称为设备相关位图,或者DDB。我尽量不全部引用device-dependent bitmap的全文,因为它看上去与device-independent bitmap类似。缩写DDB会好一些,因为我们很容易把它与DIB区别开来。<br />对程序写作者来说,现存的两种不同型态的位图从Windows 3.0开始就更为混乱。许多有经验的Wi原创 2011-04-22 01:40:00 · 575 阅读 · 0 评论 -
第十五章 与设备无关的位图(DIB 和 DDB 的结合2)
<br />与SetDIBits函数相似的函数是GetDIBits,您可以使用此函数把DDB转化为DIB:int WINAPI GetDIBits (<br /><br /> hdc, // device context handle<br /><br /> hBitmap, // bitmap handle<br /><br /> yScan, /原创 2011-04-22 01:37:00 · 642 阅读 · 0 评论 -
第五章 图像基础(绘制填入区域)
<br />绘制填入区域<br />现在再更进一步,从画线到画图形。Windows中七个用来画带边缘的填入图形的函数列于表5-3中。<br />表5-3<br /> <br />函数<br />图形<br />Rectangle<br />直角矩形<br />Ellipse<br />椭圆<br />RoundRect<br />圆角矩形<br />Chord<br />椭圆周上的弧,两端以弦连接<br />Pie<br />椭圆上的饼图<br />Polygon<br />多边形<br />PolyPol原创 2011-04-22 01:51:00 · 471 阅读 · 0 评论 -
第十四章 位图和Bitblt(位块传输)
<br />位块传输<br />我前面提到过,您可以把整个视讯显示器看作是一幅大位图。您在屏幕上见到的图素由储存在视讯显示卡上内存中的位来描述。任何视讯显示的矩形区域也都是一个位图,其大小是它所包含的行列数。<br />让我们从将图像从视讯显示的一个区域复制到另一个区域,开始我们在位图世界的旅行吧!这个是强大的BitBlt函数的工作。<br />Bitblt(读作「bit blit」)代表「位块传输(bit-block transfer)」。BLT起源于一条汇编语言指令,该指令在DEC PDP-10上用来传原创 2011-04-22 01:43:00 · 2096 阅读 · 0 评论 -
第十五章 与设备无关的位图(显示和打印3)
<br />缩放到合适尺寸<br />SetDIBitsToDevice完成了将DIB的图素对点送入输出设备的显示程序。这对于打印DIB用处不大。打印机的分辨率越高,得到的图像就越小,您最终会得到如邮票大小的图像。<br />要通过缩小或放大DIB,在输出设备上以特定的大小显示它,可以使用StretchDIBits:iLines = StretchDIBits (<br /><br /> hdc, // device co原创 2011-04-22 01:39:00 · 729 阅读 · 0 评论 -
第十五章 与设备无关的位图(DIB 和 DDB 的结合2)
<br />与SetDIBits函数相似的函数是GetDIBits,您可以使用此函数把DDB转化为DIB:int WINAPI GetDIBits (<br /><br /> hdc, // device context handle<br /><br /> hBitmap, // bitmap handle<br /><br /> yScan, /原创 2011-04-22 01:36:00 · 433 阅读 · 0 评论 -
Win32环境下dll编程原理
比较大应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。其中可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点是,在编写大的EXE程序时,在每次修改重建时都必须调整编译所有源代码,增加了编译过程的复杂性,也不利于阶段性的单元测试。 <br原创 2011-04-22 02:07:00 · 310 阅读 · 0 评论 -
第五章 图像基础(GDI 的结构)
<br />图形设备接口(GDI:Graphics Device Interface)是Windows的子系统,它负责在视讯显示器和打印机上显示图形。正如您所认为的那样,GDI是Windows非常重要的部分。不只您为Windows编写的应用系统在显示视觉信息时使用GDI,就连Windows本身也使用GDI来显示使用者接口对象,诸如菜单、滚动条、图标和鼠标光标。<br />不幸的是,如果要对GDI进行全面的讲述,将需要一整本书-当然不是这本书。在本章中,我只是想向您提供画线和填入区域的基本知识,这对于理解下面原创 2011-04-22 01:52:00 · 523 阅读 · 0 评论 -
第十四章 位图和Bitblt(位图入门,位图尺寸)
<br />位图呈矩形,并有空间尺寸,图像的高度和宽度都以图素为单位。例如,此网格可描述一个很小的位图:宽度为9图素,高度为6图素,或者更简单地计为9×6:<br /> <br /> <br />习惯上,位图的速记尺寸是先给出宽度。位图总数为9×6或者54图素。我将经常使用符号cx和cy来表示位图的宽度和高度。c表示计数,因此cx和cy是沿着x轴(水平)和y轴(垂直)的图素数。<br />我们能根据x和y坐标来描述位图上具体的图素。一般(并不都是这样),在网格内计算图素时,位图开始于图像的左上角。这样,在此原创 2011-04-22 01:43:00 · 1206 阅读 · 0 评论 -
第四章 输出文字(绘制和更新,GDI 简介)
<br />在前一章,您看到了一个简单的Windows 98程序,它在窗口中央,或者更准确地说,在显示区域中央显示一行文字。正如我们学到的,显示区域是整个应用程序窗口中未被标题列、窗口边框,以及可选的菜单列、工具列、状态列和滚动条占据的部分。简而言之,显示区域是窗口中可以由程序任意书写和传递视觉信息的部分。<br />对于程序的显示区域,您几乎可以为所欲为,只不过您不能假定窗口大小是某一特定尺寸,或者在程序执行时其大小会保持不变。如果您不熟悉图形窗口环境的程序设计,这些限制可能会使您感到惊讶:不能再假设屏幕原创 2011-04-22 01:58:00 · 805 阅读 · 0 评论