• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Delphi7图像篇(三)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本实例主要用鼠标在窗体上绘图

用到组件有TBevel、TRadioGroup、TButton组件

运行效果如下:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, XPMan;

type
  TForm1 = class(TForm)
    Bevel1: TBevel;
    Bevel2: TBevel;
    Bevel3: TBevel;
    Bevel4: TBevel;
    Button1: TButton;
    RadioGroup1: TRadioGroup;
    Button2: TButton;
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    start:Boolean;
    OX,OY:Integer;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  start:=true;
  case RadioGroup1.ItemIndex of
    0: ; //nothing
    1,2,3,4,
    5:  begin
          OX:=X;
          OY:=Y;
        end;
  end;
  Self.Canvas.MoveTo(X,Y);    //设置画笔的起始位置
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if start then
  begin
  case RadioGroup1.ItemIndex of   //根据TRadioGroup组件的索引号进行操作
    0: begin
         Canvas.Pen.Color := clWindowText;    //将画笔设置成黑色
         self.Canvas.LineTo(X,Y);        //鼠标移动时在窗体上画线
       end;
    1,2,3,4: Canvas.Pen.Color := clWindowText; //将画笔设置成黑色
    5: begin
         Canvas.Pen.Color := form1.Color;   //将画笔颜色设置成窗体颜色
         Canvas.Brush.Color := form1.Color; //将画刷颜色设置成窗体颜色
         Canvas.Rectangle(X-2,Y-2,X+2,Y+2); //对窗体进行擦除
       end;
  end;
  end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  start:=false;
  case RadioGroup1.ItemIndex of 
    0: ;
    1:  Canvas.Arc(OX,OY,x,y,oX,oY,X,y);  //画弧形
    2:  Canvas.Ellipse(Rect(OX,OY,x,y));  //画椭圆
    3:  Canvas.Rectangle(OX,OY,x,y);      //画矩形
    4:  begin                 //画椭圆
            if abs(x-OX)<abs(y-OY) then
              Canvas.Ellipse(OX,OY,OX+abs(OX-x),OY+abs(OX-x))  //以X值的长度画椭圆
         else
              Canvas.Ellipse(OX,OY,OX+abs(OY-y),OY+abs(OY-y)); //以Y值的长度画椭圆
        end;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  form1.canvas.FillRect(Rect(9,9,392,288));
end;

end.

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphixe5中TMemo控件的应用——forandroid发布时间:2022-07-18
下一篇:
delphi局域网Ping各主机方法及设置本地ip方法发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap