AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Buttons deckungsgleich beim vergrößern von Bildern...
Thema durchsuchen
Ansicht
Themen-Optionen

Buttons deckungsgleich beim vergrößern von Bildern...

Ein Thema von erich.wanker · begonnen am 25. Mär 2009 · letzter Beitrag vom 25. Mär 2009
 
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
464 Beiträge
 
Delphi XE4 Professional
 
#1

Buttons deckungsgleich beim vergrößern von Bildern...

  Alt 25. Mär 2009, 10:53
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 ..
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz