zoukankan      html  css  js  c++  java
  • Delphi7 图像篇(三)

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

    用到组件有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.
  • 相关阅读:
    7 Django的模板层
    6 Django的视图层
    5 Django-1的路由层(URLconf)
    qt 如何安装 Debuggers 调试器 ?
    window7 x64 vs2015 如何编译 libqr 二维码生成库?
    如何在 window7 环境编译 zlib 库?
    LNK2026 模块对于 SAFESEH 映像是不安全的
    如何识别二维码?
    qt Multimedia 模块类如何使用?
    qt 使用msvc编译器出现乱码如何解决?字符串中存在空格?
  • 原文地址:https://www.cnblogs.com/delphi2014/p/4076135.html
Copyright © 2011-2022 走看看