Hi,
Habe ein Programm, welches das Apfelmännchen auf ein tImage zeichnet, nachedem ich auf den Button zeichnen geklickt habe. Nachdem das Apfelmännchen gezeichnet wurde, möchte ich auf dem tImage zoomen können. Ich habe schon versucht einen Quellcode zu schreiben. Der Funtkioniert jedoch nicht. Ihr könnt ihn euch ja mal anschauen und sagen wo der Fehler liegt.
Der Zoom kann auf 2 Arten funktionieren,
...Entweder man kann mit der Maus ein viereck ect. auf dem tImage ziehen und der Bereich wird dann vergrößert
...oder man hat eine kleine Lupe als Mauszeiger wenn man auf das tImage kommt und wenn man klickt wird das Bild immer an der Stelle wo man geklickt hat um das 2 Fache vergrößert.
Ist mir egal welche funktion ihr versucht, ich habe in meinem Bsp. die 1. gewählt.
Delphi-Quellcode:
procedure TFRM_Main.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var a,b : real;
begin
a := xmin + (x-152)*(xmax-xmin) / IMG_Apfelmann.Width;
b := ymax - (y-8)*(ymax-ymin) / IMG_Apfelmann.Height;
FRM_Options.EDT_xmin.Text := floattostrf(a,fffixed,10,8);
FRM_Options.EDT_ymax.Text := floattostrf(b,fffixed,10,8);
xo := x; yl := y; xu := x; yr := y;
md := true;
end;
procedure TFRM_Main.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
md := false;
end;
procedure TFRM_Main.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var a,b : real;
begin
if md then
begin
a := xmin + (x-152)*(xmax-xmin) / IMG_Apfelmann.Width;
b := ymax - (y-8)*(ymax-ymin) / IMG_Apfelmann.Height;
FRM_Options.EDT_xmax.Text := floattostrf(a,fffixed,10,8);
FRM_Options.EDT_ymin.Text := floattostrf(b,fffixed,10,8);
IMG_Apfelmann.canvas.Pen.Mode := pmnotxor;
IMG_Apfelmann.canvas.Rectangle(xo,yl,xu,yr);
IMG_Apfelmann.canvas.Rectangle(xo,yl,x,y);
IMG_Apfelmann.canvas.Pen.Mode := pmcopy;
xu := x; yr := y;
end;
end;
Denke das man mein Problem versteht
Gruß Daniel