PaintDc:Ecken abrunden

Thopeto

Erfahrenes Mitglied
Halllo

ich hab jetzt ein Static Ctrl für Dialoge selbst geschrieben, was aussehen soll wie ein XP Fenster

guckst du:
XPStatic

wie kann ich jetzt in meiner OnPaint() die ecken links und rechts oben etwas abrunden?!

gruß
Thorsten
 
Da musst du mit Regions arbeiten:
Mit CreateRoundRectRgn() kann du eine Region erstellen und dann mit SetWindowRgn() deinem Fenster zuweisen.

P.S. sehr nettes Control

Gruß Daniel
 
danke, ich hab mich jetzt mal kundig gemacht und rausgefunden, das CreateRoundRectRgn() alle ecken rund macht. aber ich möchte nur die ecken links und rechts oben abrunden
 
Man kann auch eliptische Rgn erstellen und diese auch verbinden, allerdings weiß ich nicht, wie man das macht.
Anderseits, wenn du das Control eh schon selbst zeichnest, warum erstellst du dann nicht 2 Kreisbögen und links und rechts eine senkrechte Linie und unten eine waagrechte Linie.

Daniel
 
Na wie ich gesagt habe, du malst das ganze Control eben selbst von Hand. Hald ein Rechteck mit 2 Runden Ecken oben.
Ich weiß hald nicht wie du dein Control erstellst.
Verwendest du MFC, nur API oder wie?
Bei MFC würde ich dein Control von CWnd ableiten und bei Create() würde ich ein Rahmenloses Fenster erstellen, dann kannst du den Rahmen ja anhand der Größe des Fensters/Controls selbst zeichnen.
Mit CDC::Arc() kannst du eliptische bzw. kreisförmige Bögen erstellen. Und mit CDC::LineTo() kannst du Linien Zeichnen.

Gruß Daniel
 
mmmhh
bin ehrlich am überlegen ob ich den sourcecode offen legen soll.

wenn daran interesse besteht, gerne

So schwer ist das gar nicht, ist einfacher als du glaubst.

du musst nur eine klasse erstelln, die du von CStatic ableitest. in Paint zeichnest du 3 rechtecke: 1. für die überschrift
2. für den Nachricht (Inhalt)
3. Für den Link unten

auf codeproject.com findest du zudem ein sehr guten artikel über Gradient effekt.


gruß
Thorsten
 

Neue Beiträge

Zurück