Hallo Leute,
Hab mal ne Frage:
Ich hab in einem Fenster ein TImage mit einem BMP
Delphi-Quellcode:
object Image1: TImage
Center = True
Proportional = True
Stretch = True
OnMouseDown = oControlMouseDown
OnMouseMove = oControlMouseMove
OnMouseUp = oControlMouseUp
verschieben des Bildes via
Delphi-Quellcode:
procedure oControlMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure oControlMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure oControlMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
vergrößern/verkleinern des Bildes via
procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
funktioniert soweit...
wenn ich nun auf das Bild, sagen wir mal, 3 Speedbuttons lege, und das Bild verschiebe, verkleinere oder vergrößere, sollen die Buttons die Position "auf dem Bild" beibehalten.
Blicke nicht ganz durch, wie ich das berechne.
Vielen Dank für die Hilfe
Erich
Hier der Code fürs "Bild per Mousedown verschieben":
Delphi-Quellcode:
private
FDownX,
FDownY: Integer;
FDragging: Boolean;
type
TMoveCracker = class(TControl);
procedure TForm1.oControlMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDownX := X;
FDownY := Y;
FDragging := True;
TMoveCracker(Sender).MouseCapture := True;
end;
procedure TForm1.oControlMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if FDragging then
with Sender as TControl do
begin
Left := X - FDownX + Left;
Top := Y - FDownY + Top;
end;
end;
procedure TForm1.oControlMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if FDragging then
begin
FDragging := False;
TMoveCracker(Sender).MouseCapture := False;
end;
end;
Hier der Code für´s vergrößern/Verkleinern:
Delphi-Quellcode:
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
//.... Bildgröße = irgendwas *trunc(WheelDelta/100));
...
Erich Wanker - for life:=1971 to lebensende do begin ..