GDI+ 的主要画刷
矩阵 图形变换一般是对图形的几何信息经过几何变换后产生新的图形。常见二维图形的变换有平移、比例、对称、旋转、错切 等。图形几何变换最有效的手段是采用矩阵变换,GDI+就有这样的矩阵类Matrix,它为我们提供了许多变换的方法,如Invert(转置)、 Multiply(矩阵相乘)、Rotate(旋转)等。 需要说明的是,除了使用Matrix进行图形变换外,Graphics本身提供相应的变换方法,如RotateTransform(旋转变换)、ScaleTransform(比例变换)和TranslateTransform(平移变换)等。 基本绘图函数
文字
Font( FontFamily* , REAL , INT , Unit ) 字体的主要构造函数
FontFamily * : 指向用来定义字型的类的指针。 REAL : 字号,这里的字号可以使用小数定义。而且字号的单位也是由第4个参数指定的。 INT : 字体风格,FontStyleRegular(正常)、FontStyleBold(加粗)、 FontStyleItalic(斜体)、FontStyleBoldItalic (粗斜体)、FontStyleUnderline(下划线) 和FontStyleStrikeout(删除线)。 Unit : GDI+为用户提供了UnitDisplay(1/75英寸)、UnitPixel(像素)、UnitPoint(点)、UnitInch(英寸)、UnitDocument(1/300英寸)、UnitMillimeter(毫米)等字体尺寸单位。
为了兼容GDI 字体还有其他的几个构造函数 Font( HDC hdc, const LOGFONTW* logfont) 是其中比较常用的构造函数之一,可以看出是完全与GDI兼容的。 GDI+只有一个输出文本的函数DrawString,原型如下
其中,string用来指定要输出的字符串,length表示该字符串的长度,font用来指定字体, layoutRect用来指定一个字符串所输出的矩形区域,stringFormat用来指定文本输出格式化属性,origin用来指定字符串输出的起 点。需要注意的是,PointF和RectF类与Point和Rect类基本相同,所不同的是数据类型是浮点而后者是INT型。brush用来指定一个画刷,这个画刷既可以是SolidBrush和HatchBrush,也可以是TextureBrush(纹理画刷),甚至是渐变画刷。 在GDI+中,我们还可以通过SetTextRenderingHint来控制文本输出的质量。 文本的格式属性通常包括对齐方式、字符间隔以及文本调整等。GDI+提供StringFormat类来控制这些格式属性,通常我们调用以下几个函数来进行相关属性设置。 Status SetAlignment ( StringAlignment align ); 上面的两个函数是用来定义文本对齐方式的,align可以是StringAlignmentNear(左对齐或右对齐,取决于书写方向是从左到右还是从右到左)、StringAlignmentCenter(居中)或StringAlignmentFar(两端对齐)。 Status SetFormatFlags( INT flags ); 该函数用来设置文本格式化标志,flags可以是 StringFormatFlagsDirectionRightToLeft (水平阅读方向是从右向左) 和 StringFormatFlagsDirectionVertical(垂直文本)等值。 图像
GDI+的Image类封装了对BMP、GIF、JPEG、PNG、TIFF、WMF(Windows元文件)和 EMF(增强WMF)图像文件的调入、格式转换以及简单处理的功能。而Bitmap是从Image类继承的一个图像类,它封装了Windows位图操作的常用功能。例如,Bitmap::SetPixel和Bitmap::GetPixel分别用来对位图进行读写像素操作,从而可以为图像的柔化和锐化处理提供一种可能。 Metafile类别通过提供记录和检验矢量图像的其它方法,增强Image类别的功能。 DrawImage是GDI+的Graphics类显示图像的核心方法,它的重载函数有许多个。常用的一般重载函数有:
其中,(x,y)用来指定图像image显示的位置,这个位置和image图像的左上角点相对应。rect用来指定被图像填充的矩形区域, destPoints和count分别用来指定一个多边形的顶点和顶点个数。若count为3时,则表示该多边形是一个平行四边形,另一个顶点由系统自动给出。此时,destPoints中的数据依次对应于源图像的左上角、右上角和左下角的顶点坐标。srcx、srcy、srcwidth 和srcheight用来指定要显示的源图像的位置和大小,srcUnit用来指定所使用的单位,默认时使用PageUnitPixel,即用像素作为度量单位。 需要注意的是,在不指定范围的情况下,DrawImage会拉伸图像铺满整个设备。 Image还提供GetThumbnailImage的方法用来获得一个缩略图的指针,调用DrawImage后可将该缩略图显示,这在图像预览时极其有用。 Status DrawImage( Image* image, const Point* destPoints, INT count); 当图像进行缩放时,需要对图像像素进行插补,不同的插补算法其效果是不一样的。Graphics:: SetInterpolationMode可以让我们根据自己的需要使用不同质量效果的插补算法。当然,质量越高,其渲染时间越长。 (eplanet) |
C++/GDI+ 学习笔记(三)——基础
最新推荐文章于 2024-07-06 07:38:11 发布
使用GDI+的一些基础知识。对一些常用的类进行了简单的介绍。
TAG:
GDIPlus
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:
罗索实验室 [
http://www.rosoo.net/a/201004/9246.html]