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
Antwort Antwort
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
Markus K.

Registriert seit: 26. Jan 2004
Ort: Halle
346 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Radien beim Zeichnen einer Form

  Alt 22. Apr 2004, 20:55
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:
var Oval: HRgn;
begin
     Oval:=CreateEllipticRgn(50,50,200,200);
     SetWindowRgn(Handle,Oval,True);
end;
Tschüß Markus
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

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

Re: Radien beim Zeichnen einer Form

  Alt 22. Apr 2004, 21:00
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#4

Re: Radien beim Zeichnen einer Form

  Alt 22. Apr 2004, 21:02
Ist auch nicht so hübsch, ab da ist genug drin, was dir hilft.
Angehängte Dateien
Dateityp: exe zeichnen_bitmapundclippingsfx_840.exe (268,4 KB, 22x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Markus K.

Registriert seit: 26. Jan 2004
Ort: Halle
346 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Radien beim Zeichnen einer Form

  Alt 22. Apr 2004, 21:02
Achso Sorry...habe nicht an rechteckige Blasen gedacht

Tschüß Markus
  Mit Zitat antworten Zitat
Jörn

Registriert seit: 5. Sep 2003
Ort: Helmstedt
312 Beiträge
 
#6

Re: Radien beim Zeichnen einer Form

  Alt 23. Apr 2004, 12:08
http://astronomy.swin.edu.au/~pbourk...es/supershape/

Das könnte dir helfen einen entsprechenden Algorithmus zu entwickeln.
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:17 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