我想用鼠标在image上画一个任意角度的角。请问咋办?

解决方案 »

  1.   

    用Image1.Canvas.如Arc(0,0,5,5,23,23,12,12);
      

  2.   

    代码如下,自己用鼠标画:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls;type
      TForm1 = class(TForm)
        Image1: TImage;
        procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormCreate(Sender: TObject);
        procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
      private
        { Private declarations }
        MD:Boolean;
        ox,oy:integer;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
       MD:=True;
       ox:=x;oy:=y;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
       md:=False;
       Image1.Canvas.Brush.Color:=clWhite;
    end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
       if MD then begin
          Image1.Canvas.MoveTo(ox,oy);
          Image1.Canvas.LineTo(x,y);
       end;
    end;end.
      

  3.   

    sorry,忘了一点:
       if MD then begin
          Image1.Canvas.MoveTo(ox,oy);
          Image1.Canvas.LineTo(x,y);
          MD:=False;   /上面差这一句
       end;
      

  4.   

    一个按钮、一个timagewith image1.canvas do
    begin
      moveto(10,10);
     lineto(100,100);
      moveto(10,10);
      lineto(100,10)
    end;
      

  5.   

    // Image1.Canvas.Brush.Color:=clWhite注释这句话。
      

  6.   

    画角已解决,以下是一位高手的代码,我把它贴出来,可以参考参考。
    procedure TForm1.Label13MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
     hy:=timage(sender);
     hy.Picture.Bitmap.PixelFormat :=pf24bit;
     hy.Canvas.Pen.Color:=colorbox.Value ;
     if seq=0 then
      begin
        hy.Canvas.moveTo(x,y);
      end
      else if seq=1 then
      begin
        hy.Canvas.MoveTo(mx,my);
        hy.Canvas.LineTo(x,y);
        end
      else if seq=2 then
      begin
        hy.Canvas.MoveTo(mx,my);
        hy.Canvas.LineTo(x,y);
      end;
       mx:=x;my:=y;
       seq:=(seq+1) mod 3 ;
    end;