技术经验分享:Delphi下的GDI+编程【2】DrawLine

简介: 技术经验分享:Delphi下的GDI+编程【2】DrawLine

"

例一效果图:

在GDI+中,绘制直线是通过TGPGraphics类的DrawLine方法实现的,此类的一些方法如下:

DrawLine(线条)

DrawRectangle(矩形)

DrawEllipse(椭圆)

DrawPolygon(多边形)

DrawArc(弧形)

DrawCurve(基数样条)

DrawBezier(贝塞尔样条)

当然,要想在程序上画出来我们还需要一个TGPPen类,此类也有一些方法,如下:

SetStartCap(设置起始笔帽)

SetEndCap(设置末端笔帽)

SetDashStyle(设置画笔类型)

SetColor(设置画笔颜色)

SetWidth(设置画笔宽)

步骤:

新建工程,窗口宽和高都设为250好了,再编辑Form1的OnPaint事件代码,如下:

?unit //代码效果参考:https://v.youku.com/v_show/id_XNjQwMDQwNzE2MA==.html

Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type //定义组件与组件事件或过程函数 TForm1 = class(TForm)procedure FormPaint(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} uses GDIPOBJ, GDIPAPI; {加入这两个单元} procedure TForm1.FormPaint(Sender: TObject);var g: TGPGraphics; {定义图形类变量} p: TGPPen; {定义画笔类变量} begin g := TGPGraphics.Create(Canvas.Handle); {创建图形对象,参数为模块句柄,这里用的的画布句柄} p := TGPPen.Create(MakeColor(255,0,0),2); {创建画笔对象,参数1为颜色,参数2为笔宽,可以只留一个参数1,参数2默认为1} g.Clear(MakeColor(255,255,255)); {清除整个绘图面并以指定背景色填充这里用白色填充} p.SetColor(aclBlue); {设置颜色} p.SetWidth(10); {设置笔宽} g.DrawLine(p,20,40,200,40); {参数是整数,参数1、2为线头距左、距上, 参数3、4为线尾距左、距上。} g.DrawLine(p,MakePoint(20,60),MakePoint(200,60));//代码效果参考: https://v.youku.com/v_show/id_XNjQwMDQxMTUzMg==.html

{参数是点(整数),也就是线头的那一点(X,Y),还有就是线尾的那一点(X,Y)} g.DrawLine(p,20.9,80.0,200.9,80.0); {参数是小数,可以使数值更加精确,参数1、2为线头距左、距上,参数3、4为线尾距左、距上。} g.DrawLine(p,MakePoint(20.9,100.0),MakePoint(200.9,100.0)); {参数是点(小数),可以使数值更加精确,也就是线头的那一点(X,Y),还有就是线尾的那一点(X,Y)} g.Free; {释放图形对象} p.Free; {释放画笔对象}end;
"
image.png
相关文章
|
人工智能 安全 算法
AI应用如何进行测试?
AI应用如何进行测试?
2382 0
这一篇让你彻底搞懂贝塞尔曲线
贝塞尔曲线不懂画?不知道怎么回事?看这一篇就够了!用图形,点曲线运动图和公式推导,让你彻底搞懂贝塞尔曲线的运行原理!
4842 0
这一篇让你彻底搞懂贝塞尔曲线
|
运维 JavaScript Java
快速部署阿里云WebIDE(DevStudio)并参与开源项目开发
3个步骤,在轻量应用服务器上完成部署DevStudio,帮你快速学习使用DevStudio进行代码的开发。
快速部署阿里云WebIDE(DevStudio)并参与开源项目开发
|
jenkins 持续交付
解决Sonarqube quality gate获取不到Sonarqube正确扫描结果的问题
在Jenkins pipeline中,一般都会用到Sonar-scanner来扫描代码,扫描完之后,把结果上传到SonarQube中,SonarQube把结果与质量阀进行对比,然后通过Sonarqube quality gate来判断这次扫描结果是成功还是失败。 不少同学都遇到过Sonarqube quality gate 获得的最后结果不正确,明明SonarQube中的结果是success,而Sonarqube quality gate判断的结果是pending。 这是怎么一回事呢?
3622 0
解决Sonarqube quality gate获取不到Sonarqube正确扫描结果的问题
|
6月前
|
人工智能
Vibe Coding:快速原型与工程化的平衡
本文反思“氛围编程”(vibe coding)的双刃剑效应:虽能极速产出原型,却易致代码快速腐化、边界模糊、契约失焦。作者提出关键转向——从“生成优先”升级为“治理优先”,强调冻结边界、建立单一事实源、实施棘轮式约束,并将AI角色由“功能扩张者”转变为“工程收敛引擎”,方能守护项目可演进性与复用价值。(239字)
494 0
|
Unix Java C#
记一次对Pdfium .Net包装器的跨平台封装
PDFium 是一个开源的 PDF 渲染引擎,最初由 Google 和 Foxit Software 合作开发,并且使用 BSD 3-Clause 许可协议发布。它被设计用于在各种平台上渲染 PDF 文件,包括 Windows、macOS 和 Linux。
1085 3
|
机器学习/深度学习 自然语言处理 PyTorch
Transformers入门指南:从零开始理解Transformer模型
【10月更文挑战第29天】作为一名机器学习爱好者,我深知在自然语言处理(NLP)领域,Transformer模型的重要性。自从2017年Google的研究团队提出Transformer以来,它迅速成为NLP领域的主流模型,广泛应用于机器翻译、文本生成、情感分析等多个任务。本文旨在为初学者提供一个全面的Transformers入门指南,介绍Transformer模型的基本概念、结构组成及其相对于传统RNN和CNN模型的优势。
14280 1
|
机器学习/深度学习 运维 监控
|
前端开发
Delphi绘图功能[2] —— 窗体的绘图属性、圆弧类图形、获取Canvas对象(ClientRect解析)
Delphi绘图功能[2] —— 窗体的绘图属性、圆弧类图形、获取Canvas对象(ClientRect解析)
1038 0
Delphi绘图功能[2] —— 窗体的绘图属性、圆弧类图形、获取Canvas对象(ClientRect解析)

热门文章

最新文章