![]() |
Radien beim Zeichnen einer Form
Hallo Jungs,
ich habe folgende Frage: ich erzeuge in einer Komponente eine Form, die einer Sprechblase ähnlich schaut. Das Aussehen der Form ändere ich über Paint - mit Canvas.Polyline() werden die Umrisse mit TPoints angegeben. Leider wird dadurch die Form mit ziemlichen Ecken und Kanten angezeigt - ich würde aber gerne die Form etwas runder anzeigen lassen. Weiss jemand wie ich das machen könnte? Anbei mal ein Auszug aus meinem Quellcode - ist wahrscheinlich besser als das unverständliche Wirrwarr das oben steht :-)
Code:
mfgvar Points: array [0..11] of TPoint; h, w, Max_Left, aktuell_Left, X_Pos_Icon, Diff_Left: Integer; begin with FBalloonTip do begin // Max_Left := Screen.DesktopWidth - Width - 20; // X-Position des Icons X_Pos_Icon := FindTrayIcon(tnid).X + 8; // berechnete X-Position des Pfeils aktuell_Left := X_Pos_Icon - (3 * C); // Diff_Left := Max_Left - aktuell_Left; h := Height; w := Width; Points[0].X := C; Points[0].Y := 0; Points[1].X := 0; Points[1].Y := C; Points[2].X := 0; Points[2].Y := h - (2 * C); Points[3].X := C; Points[3].Y := h - C; // If Diff_Left > 0 then begin Left := aktuell_Left; Points[4].X := (2 * C); Points[4].Y := h - C; Points[5].X := (3 * C); Points[5].Y := h; //Pfeil rechts Points[6].X := (3 * C); Points[6].Y := h - C; end else begin Left := Max_Left; Points[4].X := X_Pos_Icon - Left - C; Points[4].Y := h - C; Points[5].X := X_Pos_Icon - Left; Points[5].Y := h; Points[6].X := X_Pos_Icon - Left; Points[6].Y := h - C; end; Points[7].X := w - C; Points[7].Y := h - C; Points[8].X := w; Points[8].Y := h - (2 * C); Points[9].X := w; Points[9].Y := C; Points[10].X := w - C; Points[10].Y := 0; Points[11].X := C; Points[11].Y := 0; // Points[5].X := (2 * C) + (C div 2); Points[5].Y := h; //Pfeil mittig // Points[5].X := (2 * C); Points[5].Y := h; //Pfeil links // Form aufbauen SetWindowRgn(Handle, CreatePolygonRgn(Points, 11, WINDING), True); // Rahmen um die Form aufbauen Canvas.Pen.Width := 2; Canvas.Pen.Style := psInsideFrame; Canvas.Polyline(Points); end; end; Helmi |
Re: Radien beim Zeichnen einer Form
Hallo Helmi,
wenn ich runde oder ovale Formulare erstellen möchte mache ich es so (du musst nur noch die Werte deinen Vorstellungen anpassen). Vielleicht hilft es dir ein wenig. Den Code kannst du zum Beispiel einfach ins FormCreate "reinsetzen".
Delphi-Quellcode:
Tschüß Markus
var Oval: HRgn;
begin Oval:=CreateEllipticRgn(50,50,200,200); SetWindowRgn(Handle,Oval,True); end; |
Re: Radien beim Zeichnen einer Form
Hallo Markus,
diesen Code kenn ich. Mein Problem ist, dass er mir nichts nützt. Dieser Code erzeugt ja was rundes - ich will aber im Groben und Ganzen ein Rechteck mit abgerundeten Ecken. |
Re: Radien beim Zeichnen einer Form
Liste der Anhänge anzeigen (Anzahl: 1)
Ist auch nicht so hübsch, ab da ist genug drin, was dir hilft.
|
Re: Radien beim Zeichnen einer Form
Achso Sorry...habe nicht an rechteckige Blasen gedacht :oops:
Tschüß Markus |
Re: Radien beim Zeichnen einer Form
![]() Das könnte dir helfen einen entsprechenden Algorithmus zu entwickeln. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:47 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