- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.2 图形处理技术
二、图形程序的开发 1. 在工具条中添加加速按钮 加速按钮是应用程序常用的部件,它是替代菜单的快捷形式,通常把多个加速按钮集中在一个工具条中以方便使用。Graphex中有三个工具条,它们是TPancel部件,面板上有几组加速按钮,用以设置绘图方式、画笔、画刷。 每个加速按钮的glyph属性是图像对象,位图对象用来指示该按钮是否被使用。glyph 通常需要四幅图像,分别表示按下、不按、选择、失效四种状态。程序员可根据个人喜好来选择图像。 加速按钮使用图像来告诉用户其状态和目的,因为按钮上无标题, 因此应给用户正确的提示: ● 把Down属性设置成真值使加速按钮呈按下状态 ● 把Enable属性设置成假值使加速按钮呈失效状态。 例程中缺省的绘图工具是画线,因此应用程序开始时画线按钮呈按下状态。 在应用程序中,常把一些功能相似的按钮放在一起,用户在同一时刻只能选择其中的一个按钮。当其它按钮按下时,原来被按下的按钮自动弹起,这些选择排它的按钮称为一组加速按钮。 要使多个加速按钮成为一组,将这些按钮的GraphIndex属性设成相同的值。最简单的办法是在设计状态时,用鼠标选中各个加速按钮,然后设置GraphIndex值。 有时用户按一个已经按下的按钮,希望该按钮能够弹起,这样没有任何按钮被按下,使用AllowAllup 属性可实现上述功能。对于一组加速按钮来讲,设置该组中任一按钮的AllowAllup可使这组的每一个按钮具有这种功能。 Graphex程序中设计了三组加速按钮和两个单独的加速按钮。 第一组加速按钮用来选择绘图工具,它与两个单独的按钮处在同一面板中,这个面板是缺省可见的。另外两个按钮分别代表画笔、画刷。第二组与第三组加速按钮处在两个缺省不可见的面板中,它们分别代表不同风格的画笔和画刷,只有按下第一个面板中的画笔(或画刷)按钮,第二(或第三) 个面板才会显示,这样用户就可以选择画笔、画刷了。 2. 响应鼠标事件 鼠标常被用作绘图的工具,应用程序利用鼠标位置的变化来绘制各种不同的图形。鼠标有三个动作:鼠标按钮按下、鼠标移动、鼠标按钮弹起。在Delphi中, 对应三个动作有三个不同的事件:OnMouseDown,OnMouseMove,OnMouseUp。 当Dlephi应用程序探测到一个鼠标动作时,它传递五个参数,并调用相应的事件响应。 程序员可利用这些参数来定义事件程序。 鼠标事件的五个参数 参数 含义 Sender 探测鼠标动作的对象 Button 涉及的鼠标按钮:左键,中键,右键 Shift 鼠标动作时,Alt,Ctrl,Shift按钮的状态 X,Y 事件发生时鼠标的坐标 当鼠标按下时发生OnMouseDown事件。 举一个简单例子来说明程序如何对该事件进行响应。 假如我们想在鼠标按下的地方出现Here。 可在OnMouseDown事件中调用TextOut方法: procedure TForm1.FormMouseDown(Sender: TObject, Button: TMouseButton; Shift : TShifState; X,Y : Integer); begin Canvas.TextOut(X, Y, Here!); end; 用户放松鼠标键时发生OnMouseUp事件。该事件发生时,鼠标到达的对象并不一定是鼠标键按下时鼠标所在的对象。例如,用户可在窗体之外画一条线段,(鼠标在窗体外,线段在窗体内)。下面的代码可用鼠标绘制直线: procedure TForm1.FormMouseDown(Sender:TObject) begin Moveto(x,y); end; procedure TForm1.FormMouse Up(Sender:Tobject) begin Lineto(X, Y); end; ???? 画直线时,用户只有在松开鼠标才能看见直线,对直线的变化不能进行实时观测。这是因为鼠标移动时程序没有进行响应。Delphi定义了OnMouseMove事件来响应鼠标移动。以下代码可使用户随时观测直线的变化: procedure TForm1.FormMouseMove(Sender:Tobject) begin Drowto(X,Y); Moveto(origin); end. 其中变量origin是起始点。 在设计绘图程序时,还要解决一些问题。如为了在鼠标移动时能观测图形的变化,我们定义了OnMouseMove事件。但会出
您可能关注的文档
- 4 施工试验.ppt
- 4 方程求根.pptx
- 4 无失真信源编码及其定理.ppt
- 4 热控系统调试措施.doc
- 4 物化 化学平衡.ppt
- 4 稳定性与李雅普诺夫分析.pptx
- 4 第四章 流体动力学基本方程.ppt
- 4 纺织材料的吸湿性.ppt
- 4 队列研究.ppt
- 4(1份 物理老师张老师上午8:30)2015初二暑假教材(16讲:凸透镜成像规律).doc
- 小学科学:ESP8266智能插座电路原理与动手实践研究教学研究课题报告.docx
- 《金融开放浪潮下我国多层次监管体系构建与创新研究》教学研究课题报告.docx
- 区域教育质量监测中人工智能应用的数据质量分析与优化策略教学研究课题报告.docx
- 《金融科技监管中的数据治理与合规性要求》教学研究课题报告.docx
- 《3D打印技术在航空航天领域中的多材料制造与复合材料应用》教学研究课题报告.docx
- 《绿色金融发展中的政府职能与市场机制研究》教学研究课题报告.docx
- 《植物工厂多层立体栽培光环境调控技术对植物生长发育节律的调控机制探讨》教学研究课题报告.docx
- 销售团队年度业绩总结.docx
- 银行风险管理与金融危机防范.docx
- 银行网络攻击预警与快速响应机制.docx
文档评论(0)