AGB  ·  Datenschutz  ·  Impressum  







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

Radien beim Zeichnen einer Form

Ein Thema von Helmi · begonnen am 22. Apr 2004 · letzter Beitrag vom 23. Apr 2004
 
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

Radien beim Zeichnen einer Form

  Alt 22. Apr 2004, 20:10
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:

var
  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;
mfg
Helmi
  Mit Zitat antworten Zitat
 


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 22:43 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