其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

DELPHI基础教程:Delphi图形图像编程(一)[2]


发布日期:2022年12月28日
 
DELPHI基础教程:Delphi图形图像编程(一)[2]

Tpen Object(画笔对象)

应用程序常用TPen对象在画布上绘制各种线段笔的颜色在Color属性中定义线段宽度在Width属性中定义

Style属性定义了线段的各种类型如表:

Styled的取值及含义

━━━━━━━━━━━━━━━━━━━━━━

Style 含义

──────────────────────

PSolod 画固定线段

PSDash 画由下划线组成的线段

PSDot 画由点组成的线段

PsDashDot画点划线

PsClear  画双点划线

PsClear 画看不见的线段

PsInsideFrame 画边界的矩形线框

━━━━━━━━━━━━━━━━━━━━━━━

Mode属性定义线段的颜色可结合当前的颜色屏幕颜色或它们反转值对线段的颜色重新定义但不改变Color属性详见表

Mode的取值及含义

━━━━━━━━━━━━━━━━━━━━━━━━━━━

Mode 象素颜色

──────────────────────────

PmBlack 黑色

PmWhite  白色

PmNop 不变

PmCopy 使用Color属性中的颜色

PmNotCopy 笔颜色的反转值

PmMergePenNot 笔的颜色与屏幕颜色反转值的结合

PmNaskNotPen 屏幕颜色与笔颜色

PmMergeNotPen 屏幕颜色与笔颜色反转值的结合

━━━━━━━━━━━━━━━━━━━━━━━━━━━

TBrush OBject(画刷对象)

画刷对象用以填充图形如用画刷颜色或图案对矩形或椭圆进行填充TBrush拥有一个画刷句柄(HBrush)

画刷的颜色定义在Color属性中画刷还有一个Bitmap属性该属性只能在运行时得到画刷可使用位图填充图形以产生特殊效果位图大小为个象素点个象素点宽

Style属性定义了画刷填充图形的风格

TColor类型

TColor类型用于定义一个对象的颜色很多部件的颜色属性就是TColor 类型 在Graphics单元中TColor定义如下

TColor = (COLOR_ENDCOLORS + )$FFFFF;

这是一个位二进制数据Graphic单元中还定义了一些常用的颜色常量这些常量或直接映射成系统调色板中最相近的颜色或映射成Wondows 控制面板中颜色部分的系统视频颜色

直接映射成系统调色板中的颜色有

ClAquaCLBlackClBlueClbkGrrayClFuchsoa……ClYellow

映射程序用字节的二进制码来定义颜色 位字节代表RGB 相应的颜色如$FF表示纯蓝$FF表示纯绿$FF表示纯红$表示黑色$FFFFFF表示白色如果最高位字节是$则表示用系统调色板中最相近的颜色最高位字节是$则表示用当前调色板中最相近的颜色匹配最高位字节是$则用当前设备描述表中逻辑调色板的次相近颜色匹配

用Windows API的SelectPalette函数可创建逻辑调色板要实现逻辑调色板到硬件调色板的映射需用函数RealizePalett

图形程序的开发

Graphexdpr是一个简单的图形图像应用程序运行状态如图该程序可用鼠标绘制多种图形可设置画笔颜色画刷填充方式另外还可以浏览位图元文件图标改变它们的大小并打印本节结合例程讲述以下问题

● 在工具条中添加加速按钮

● 响应鼠标事件

● 设置画笔和画刷

● 实现绘图的橡皮擦功能

● 加入状态条

在工具条中添加加速按钮

加速按钮是应用程序常用的部件它是替代菜单的快捷形式通常把多个加速按钮集中在一个工具条中以方便使用Graphex中有三个工具条它们是TPancel部件面板上有几组加速按钮用以设置绘图方式画笔画刷

每个加速按钮的glyph属性是图像对象位图对象用来指示该按钮是否被使用glyph 通常需要四幅图像分别表示按下不按选择失效四种状态程序员可根据个人喜好来选择图像

加速按钮使用图像来告诉用户其状态和目的因为按钮上无标题 因此应给用户正确的提示

● 把Down属性设置成真值使加速按钮呈按下状态

● 把Enable属性设置成假值使加速按钮呈失效状态

例程中缺省的绘图工具是画线因此应用程序开始时画线按钮呈按下状态

在应用程序中常把一些功能相似的按钮放在一起用户在同一时刻只能选择其中的一个按钮当其它按钮按下时原来被按下的按钮自动弹起这些选择排它的按钮称为一组加速按钮

要使多个加速按钮成为一组将这些按钮的GraphIndex属性设成相同的值最简单的办法是在设计状态时用鼠标选中各个加速按钮然后设置GraphIndex值

有时用户按一个已经按下的按钮希望该按钮能够弹起这样没有任何按钮被按下使用AllowAllup 属性可实现上述功能对于一组加速按钮来讲设置该组中任一按钮的AllowAllup可使这组的每一个按钮具有这种功能

Graphex程序中设计了三组加速按钮和两个单独的加速按钮 第一组加速按钮用来选择绘图工具它与两个单独的按钮处在同一面板中这个面板是缺省可见的另外两个按钮分别代表画笔画刷第二组与第三组加速按钮处在两个缺省不可见的面板中它们分别代表不同风格的画笔和画刷只有按下第一个面板中的画笔(或画刷)按钮第二(或第三) 个面板才会显示这样用户就可以选择画笔画刷了

[] [] []

               

上一篇:DELPHI基础教程:Delphi图形图像编程(一)[3]

下一篇:DELPHI基础教程:Delphi图形图像编程(一)[1]