Delphi绘图功能[1] —— 入门(绘制直线和矩形)

目录

一、👀绘图知识

二、👀画直线

✨画直线示例:

三、👀画刷填充全框 

✨全区域填充颜色示例:

✨结果展示: 

四、👀矩形

✨圆角矩形: 

✨焦点矩形:

✨矩形描边:

✨代码示例:

✨效果图:


一、👀绘图知识

绘图需要有纸、画笔、画刷; Delphi 有 Canvas、Pen、Brush.

Canvas 就是画布, 譬如窗体的 Canvas 属性, 就是窗体的画布;
Pen 是画笔, 可以设置笔色、笔宽等等;
Brush 是画刷, 可以设置颜色等等。

我们所有绘图操作都是在Canvas上进行的。

二、👀画直线

✨画直线示例:

procedure TForm1.Button1Click(Sender: TObject);
begin
    Canvas.Pen.Color := clRed;      {设置画笔颜色}
    Canvas.Pen.Width := 2;          {设置画笔宽度}

    Canvas.MoveTo(100,100);           {直线起点}
    Canvas.LineTo(500,500);         {直线起点}

    {实际上这里的Canvas是简写,也可以写做; Self.Canvas 或 Form1.Canvas}
end;

三、👀画刷填充全框 

✨全区域填充颜色示例:

procedure TForm1.Button2Click(Sender: TObject);
begin
  Canvas.Brush.Color := clPurple;           {设置画刷颜色,也就是填充色}
  Canvas.FillRect(ClientRect);              {填充窗体客户区}
end;

✨结果展示: 

82d458a3e64943068ad055bd505de9e6.png

四、👀矩形

✨圆角矩形: 

d6da87086aac4e64ab2a8b0bc83c6fed.png

使用圆角矩形绘制一个圆角矩形使用钢笔和填充它与画笔。矩形的边缘由点(X1,Y1) ,(X2,Y1) ,(X2,Y2) ,(X1,Y2)定义,但是角落将被修剪以创建一个圆形的外观。圆角的曲线与宽 X3和高 Y3的椭圆的曲率相匹配。

✨焦点矩形:

b6df8d8838bf4770a19a419bc0a5bd9b.png

 

当控件获得或失去输入焦点时,调用 DrawFocusRect 以获得控件图像的周长。因为 DrawFocusRect 使用了一个 XOR 函数,所以在指定相同的矩形时第二次调用它会从屏幕中移除该矩形。

此函数绘制的矩形无法滚动。要滚动包含 DrawFocusRect 绘制的矩形的区域,请调用 DrawFocusRect 从屏幕上移除该矩形,滚动该区域,然后调用 DrawFocusRect 在新位置绘制该矩形。

✨矩形描边:

使用画布的 Brush 绘制矩形以绘制边框

使用 FrameRect 在矩形区域周围绘制1像素宽的边框。FrameRect 不使用 Brush 模式填充矩形的内部。

若要使用 Pen 代替绘制边界,请使用 Polygon 方法。


✨代码示例:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button1: TButton;

    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  btn : TButton;

//如果参数在函数中不可能修改, 一定要使用 const
const            //这里设置了不可修改的两个值
  y1 = 100;
  y2 = 500;

{在form打开时就自动创建画笔画刷}
procedure TForm1.FormCreate(Sender: TObject);
begin
  Canvas.Pen.Width := 4;
  Canvas.Pen.Color := clRed;
  Canvas.Brush.Color := clWhite;   //设置画刷颜色
end;


{1、给出左上角和右下角的坐标就可以绘制矩形}
procedure TForm1.Button1Click(Sender: TObject);
begin
   btn := TButton(Sender);
   Canvas.Rectangle(btn.Left, y1, btn.Left+btn.Width, y2);
                   { 左      上边界     右      下边界}
end;

{2、给出一个矩形结构做参数也可以绘制矩形}
procedure TForm1.Button2Click(Sender: TObject);
var
  R: TRect; {定义一个矩形结构}
begin
  btn := TButton(Sender);
  R := Rect(btn.Left, y1, btn.Left+btn.Width, y2);
  Canvas.Rectangle(R);
end;

{3、绘制圆角矩形; 前四个参数是矩形左上,右下两个点的坐标,最后两个参数是设置圆角的}
procedure TForm1.Button3Click(Sender: TObject);
begin
  btn := TButton(Sender);
  Canvas.RoundRect(btn.Left, y1, btn.Left+btn.Width, y2, 200,200);
  {最后两个参数越大,圆角弧度越大,}
end;

{4、绘制焦点矩形; 它不受画笔的影响; 它的颜色是和画刷的颜色进行某种运算得来的(与自己定义的无关)}
procedure TForm1.Button4Click(Sender: TObject);
var
  R: TRect;
begin
  btn := TButton(Sender);
  R := Rect(btn.Left, y1, btn.Left+btn.Width, y2);
  Canvas.DrawFocusRect(R);         //获得焦点显示/隐藏
end;

{5、矩形描边, 用的不是画笔是画刷}
procedure TForm1.Button5Click(Sender: TObject);
var
  R: TRect;
begin
  btn := TButton(Sender);
  R := Rect(btn.Left, y1, btn.Left+btn.Width, y2);
  Canvas.FrameRect(R);
end;

end.

✨效果图:

1ceddb75f17f4e3683b5a9e883953829.png

 

笔者也是Delphi小白,解释如有问题,请大神们帮忙指出修改🙈 

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幸福西西弗斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值