AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

bewegliches Polygon

Ein Thema von verkouter · begonnen am 4. Jan 2009 · letzter Beitrag vom 4. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2      
verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#1

bewegliches Polygon

  Alt 4. Jan 2009, 11:31
Hallo, ich bin neu im Forum.

Ich habe auf eine Form vier kleine Image liegen die mit der Maus beweglich sind.
Nur wenn ich eine der Bilder bewege,soll zwischen allen bildern ein Polygon gezeichnet werden,
daß wieder verschwindet wenn die Maus losgelassen wird.
Mein Quelltext.

Delphi-Quellcode:
procedure TForm2.ImageMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   if Button = mbLeft then
  begin
    FDragging := True;
    FLastPos := Point(X, Y);
    TControlAccess(Sender).MouseCapture := True;
  end;
end;

procedure TForm2.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin

  if FDragging then
  begin
    TControlAccess(Sender).Left := TControlAccess(Sender).Left + X - FLastPos.X;
    TControlAccess(Sender).Top := TControlAccess(Sender).Top + Y - FLastPos.X;
        form2.Canvas.Pen.Color:=clRed;
  form2.Canvas.Pen.Mode:=pmNotXor;
  form2.Canvas.Pen.Style:=psDot;
    form2.Canvas.MoveTo(image2.Left+9,image2.top+9);
  form2.Canvas.Polygon([(point(image2.Left+9,image2.Top+9)),point(image3.Left+9,image3.Top+9),
  (point(image5.Left+9,image5.Top+9)),(point(image4.left+9,image4.Top+9))]);
  end;
end;

procedure TForm2.ImageMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
     if Button = mbLeft then
  begin
    FDragging := False;
  end;
end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: bewegliches Polygon

  Alt 4. Jan 2009, 11:35
Auf dem Canvas sollte man nur in der Paint Methode zeichen, weil dann beim Repaint diese Änderungen wieder übermalt werden.
Man könnte auch ein TShape verwenden.
Innerhalb einer Methode niemals auf Instanzbezeichnungen zugreifen( form2)
Markus Kinzler
  Mit Zitat antworten Zitat
verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#3

Re: bewegliches Polygon

  Alt 4. Jan 2009, 11:40
Ich muss vieleicht noch dazusagen,daß unter den vier kleinen Images eine große Imagekomponente liegt,
in der ein Bild zur Laufzeit geladen wird.Die Imagekomponente steht auf Stretch,deshalb wollte ich
nicht direkt auf das Image malen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: bewegliches Polygon

  Alt 4. Jan 2009, 11:44
Trotzdem sollte man nur in der Paint-Methode zeichnen, weil sonst bei jedem Redraw die Änderungen überschrieben werden.
Markus Kinzler
  Mit Zitat antworten Zitat
verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#5

Re: bewegliches Polygon

  Alt 4. Jan 2009, 11:56
Das mit der Paint-Methode verstehe ich nicht. Was muß ich am Quelltext ändern?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: bewegliches Polygon

  Alt 4. Jan 2009, 11:57
Den Code der Zeichnet in die Paint-Methode aufnehmen
Markus Kinzler
  Mit Zitat antworten Zitat
verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#7

Re: bewegliches Polygon

  Alt 4. Jan 2009, 13:24
Ich habe den Zeichencode in ONPAINT des Formulars kopiert,die mit dem Polygon funktioniert jetzt,
blos die Linien liegen jetzt hinter dem großen Image und sind dauernd sichtbar.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#8

Re: bewegliches Polygon

  Alt 4. Jan 2009, 13:26
Hi!

Willkommen in der DP.

Könntest du bitte deinen Quelltext noch in Tags setzen, damit er auch schön formatiert wird?


Danke!


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: bewegliches Polygon

  Alt 4. Jan 2009, 13:26
Die TImage-Instanzen liegen ja vor der Form. Vielleicht wäre in deinem fall eine PaintBox auf der du die Images und die Linien malst besser
Markus Kinzler
  Mit Zitat antworten Zitat
verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#10

Re: bewegliches Polygon

  Alt 4. Jan 2009, 15:02
Also,habe jetzt Paintbox auf großes Image gelegt und die vier kleinen obendrauf.
Im ONPAINT der Paintbox folgenter Code:

Delphi-Quellcode:
procedure TForm2.PaintBox1Paint(Sender: TObject);
begin
  Canvas.Pen.Color:=clRed;
 canvas.Pen.Mode:=pmNotXor;
 Canvas.Pen.Style:=psDot;
 Canvas.MoveTo(image2.Left+9,image2.top+9);
 Canvas.Polygon([(point(image2.Left+9,image2.Top+9)),point(image3.Left+9,image3.Top+9),
  (point(image5.Left+9,image5.Top+9)),(point(image4.left+9,image4.Top+9))]);
end;
Im Mousevove der kleinen Images Paintbox1.refresh.
Wenn ich jetzt ein kleines Image bewege,habe ich nur ein flackerndes Polygon???
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:26 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