Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TImage flackert beim Verschieben wenn Mauszeiger über Bild (https://www.delphipraxis.net/135946-timage-flackert-beim-verschieben-wenn-mauszeiger-ueber-bild.html)

hadschi92 20. Jun 2009 19:32


TImage flackert beim Verschieben wenn Mauszeiger über Bild
 
Der Titel sagt schon fast alles. Und zwar habe ich eine Funktion implementiert, dass ich ein Bild (TImage) auf meinem Formular hin und herschieben kann. Das klappt auch super, aber nur solange der Mauszeiger nicht über dem Bild ist. Dann fängt das Bild bisschen an zu flackern, heißt es springt immer einen Pixel weg und dann wieder zurück, anstatt dass es sich um einen Pixel verschiebt.

Mein Code sieht bis jetzt so aus:
Delphi-Quellcode:
var XAlt, YAlt: Integer;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  XAlt := X;
  YAlt := Y;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if ssMiddle in Shift then begin
    Image1.Left := Image1.Left + (X - XAlt);
    Image1.Top := Image1.Top + (Y - YAlt);
  end;
  XAlt := X;
  YAlt := Y;
end;
FormMouseDown und FormMouseMove ist natürlich auch in die Ereignisbehandlung onMouseMove und onMouseDown des Images rein geschrieben. Form1.DoubleBuffered ist außerdem auf true.

Blup 22. Jun 2009 07:05

Re: TImage flackert beim Verschieben wenn Mauszeiger über Bi
 
Die Ereignisse sind dem Image zugewiesen. Damit sind auch die Koordinaten, die in X und Y übergeben werden, relativ zur oberen linken Ecke des Image. Da das Image unter dem Mauszeiger verschoben wird, bleibt die Maus immer auf der selben relativen Position im Image. An dieser Stelle darf deshalb XAlt und YAlt nicht geändert werden.

SimStar001 22. Jun 2009 07:10

Re: TImage flackert beim Verschieben wenn Mauszeiger über Bi
 
packs image mal auf nen Panel und aktiviere doublebufferd := true;

sollte aber auch ohne panel funktionieren!


--> form1.doublebufferd := true;

hadschi92 22. Jun 2009 21:44

Re: TImage flackert beim Verschieben wenn Mauszeiger über Bi
 
Vielen Dank, Blub dein Beitrag hat mir geholfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz