PDA

Visualizza la versione completa : [DELPHI] Disegnare figure geometriche con mouse all'interno di un controllo PaintBox


thepunisher187
30-12-2008, 12:40
Salve, sto cercando di capire ma non riesco da farmelo uscire...praticamente dovrei usare un paintbox per disegnare 1 rettangolo, 1 linea, 1 quadrato, 1 cerchio/ellisse
e dovrebbe avvenire nel seguente modo: clicco su un punto nella paintbox (punto di inizio) e poi su un altro punto (punto di arrivo/fine) e tra questi 2 punti dovrebbe appunto uscirmi la figura...
se non ho capito male dovrei usare la proprietÓ canvas ma non riesco a farmi uscire niente inoltre mi chiede delle coordinate x,y che pero' non so da dove andarle a prendere...
perdonate la mia ignoranza e vi prego di aiutarmi, grazie.

thepunisher187
30-12-2008, 14:50
A comunque se si puo' fare anche in un altro modo (anche usando un altro oggetto) va benissimo lo stesso =)

JuanJuan
30-12-2008, 15:30
Salve,
non so se ho capito bene la tua domanda, la soluzione dovrebbe essere questa:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
StartX,StartY :integer; (* variabili globali *)


implementation

{$R *.dfm}



procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Form1.Canvas.Rectangle(StartX, StartY, X, Y);

(* disegna il rettangolo quando si alza il Bt Sx del mouse*)
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var AX,AY:integer;
begin
StartX := X;
StartY := Y;
(*legge le coordinate del mouse quando si clicca con il Bt Sx del mouse *)
end;

end.

Attenzione a mettere in Form1 Eventes On MouseDown la procedura FormMouseUp
e in Form1 Eventes On MouseUp la procedura FormMouseUp.

(innocentemente copiato dall'help di delphi 6)

Buon lavoro

thepunisher187
01-01-2009, 03:31
Grazie sono riuscito a disegnare cio che volevo ;)

Loading