![]() |
Line über Controls zeichnen
Tag alle zusammen,
kann mir vielleicht jemand sagen wie man eine Linie über einem Control zeichnen kann? Wenn ich die Canvas funktion meiner Form verwende ist die Linie immer unter den controls. Ich habe auch bemerkt das TGraphicControl Klassen auch immer unterhalb von TWinControls Klassen sind. Mein Ziel ist es: wenn ich ein objekt auf meiner Form bewege (wo standard controls platziert sind), soll der Ursprungspunkt und die aktuelle mouse-Position mit einer linie verbunden werden. Diese Linie soll dann natürlich an oberster Ebene sein. Thx, Ralfi |
Re: Line über Controls zeichnen
Erzeuge eine Image mit transparenten Hintergrund welches du ganz nach oben bringst.
|
Re: Line über Controls zeichnen
Moin Ralfi,
erst einmal herzlich willkommen hier in der Delphi-PRAXiS. Nicht, dass Du Dich wunderst: Ich habe Deinen Doppelpost mal entfernt ;-) |
Re: Line über Controls zeichnen
Danke erstaml für deine rasche Antwort (mkinzler),
aber leider funktioniert es nicht. Das TImage control bleibt auch weiterhin unterhalb z.b. eines Buttons. Auch wenn ich die Sichtbarkeitsreihenfolge zur Laufzeit ändere habe ich nicht den gewünschten Erflog. Hier mein Code:
Delphi-Quellcode:
Hast vielleicht noch eine andere Idee?
...
procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin for i := 0 to self.ControlCount-1 do begin if self.Controls[i].Name = Image1.Name then self.Controls[i].BringToFront; end; Image1.Canvas.LineTo(Image1.Width, Image1.Height); end; ... Thx, ralfi [edit=SirThornberry]Delphi-Tags gesetzt - Mfg, SirThornberry[/edit] |
Re: Line über Controls zeichnen
Versuchs mal statt des Images mit ner PaintBox.
|
Re: Line über Controls zeichnen
Ne funktioniert auch nicht.
Ich versuchs mal mit einer von TComponent abgeleiteten Klasse. Weis jemand vielleicht welche methode ich überschreiben muss um das contol selbst zu zeichnen? thx, ralfi |
Re: Line über Controls zeichnen
Nimm TGraphicControl als Basisklasse, diese enthält einen Canvas.
|
Re: Line über Controls zeichnen
Habe gelesen das TWinControl Objekte immer über TGraphicControl Objekten gezeichnet werden.
(Das ist echt blöd :cry: ) Gibt es vielleicht einen Trick, ein TGraphicsControl Objekt doch über ein TWinControl Objekt zu zeichnen? thx, ralfi |
Re: Line über Controls zeichnen
Hallo,
eventuell hilft Dir das weiter, der Code zeichnet ein rotes Kreutz über eine RadioGroup:
Delphi-Quellcode:
//...
private FCanvas: TControlCanvas; //... procedure TForm1.FormCreate(Sender: TObject); begin FCanvas:=TControlCanvas.Create; FCanvas.Control := RadioGroup1; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin FCanvas.Free; end; procedure TForm1.Button1Click(Sender: TObject); begin FCanvas.Pen.Color := clRed; FCanvas.MoveTo(0,0); FCanvas.LineTo(RadioGroup1.Width,RadioGroup1.Height); FCanvas.MoveTo(RadioGroup1.Width,0); FCanvas.LineTo(0,RadioGroup1.Height); end; procedure TForm1.Button2Click(Sender: TObject); begin //Kreutz entfernen RadioGroup1.Repaint; end; |
Re: Line über Controls zeichnen
mit der winAPI funktion in den HADNLE des formulas müste es doch auch gehen oder ?
|
Re: Line über Controls zeichnen
Danke Lannes für den guten Tipp,
leider ist mein Problem aber noch immer nicht gelöst, denn ich will eigentlich eine Linie über mehrere Controls zeichnen. Die TControlCanvas Klasse kann aber leider nur einem Control zugeordnet werden :cry: . Ich habe auch versucht die Form dem TControlCanvas objekt zuzuordnen, leider auch ohne Erfolg. Sonst noch welche Tipps auf lager? thx, ralfi |
Re: Line über Controls zeichnen
das TGraphicControls kein eigenes Handle haben und sich nur auf die Canvas ihres Parents zeischnen kann ein GraphicControl (zum Beispiel TImage) niemals über einem Control mit Handle liegen. Und ein WinControl (Fenster im Sinne von Windows) kann nie wirklich transparent sein. Daher ist die einfachste Lösung einen Screenshot vom Formular zu machen, diesen auf einem Panel zu zeischnen (zum Beispile ein Timage auf das Panel legen) und das Panel über alles andere legen
|
Re: Line über Controls zeichnen
Hallo,
Zitat:
hab mal den Tipp " ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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