Einzelnen Beitrag anzeigen

Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#10
  Alt 20. Feb 2003, 16:49
Zitat von NeoDeluxe:
Soooooooooooooooooooooooooooooooooooooong! Sorry, hab nichts kapiert kannst du bitte etwas genauer erklären.=>Quelltext
Danke.

Grüße NeoDeluxe

Na gut... hier der Quelltext (ist nur so auf die schnelle geschrieben)

Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
var
 bild_mitte : TPoint;
 min_abstand : Int64;
 abstand,
  dif_x,
  dif_y : Extended;
 links,
  oben : Integer;
begin
 bild_mitte.x := Image1.Left + (Image1.Width div 2);
 bild_mitte.y := Image1.Top + (Image1.Height div 2);
 min_abstand := 300;
 links := 0;
 oben := 0;
 dif_x := bild_mitte.x - x;
 dif_y := bild_mitte.y - y;
 if (dif_x < 0) then
  begin
   dif_x := dif_x * -1;
  end;
 if (dif_y < 0) then
  begin
   dif_y := dif_y * -1;
  end;
 abstand := Round(sqrt((dif_x * dif_x) + (dif_y * dif_y))); //Abstand der Maus zum Bild;
 if (abstand < min_abstand) then
  begin
   if (y <> bild_mitte.y) then
    begin
     if (y < bild_mitte.y) then
      begin
       oben := -1;
      end
     else
      begin
       oben := +1;
      end;
    end;
   if (x <> bild_mitte.x) then
    begin
     if (x < bild_mitte.x) then
      begin
       links := -1;
      end
     else
      begin
       links := +1;
      end;
    end;
   image1.Left := image1.left - links;
   image1.top := image1.top - oben;
  end;
end;
Was ich mache:

Ich ermittele den Mittelpunkt des Bildes.

Delphi-Quellcode:
 bild_mitte.x := Image1.Left + (Image1.Width div 2);
 bild_mitte.y := Image1.Top + (Image1.Height div 2);
Dann berechen ich die entfernung zur maus:
 abstand := Round(sqrt((dif_x * dif_x) + (dif_y * dif_y))); //Abstand der Maus zum Bild; Satz des Pyt: a² + b² = c²

Und jetz prüfe ich nur noch ob die Maus oberhalb, unterhalb, links oder rechts vom Bild ist und verschiebe es entsprechend.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat