Einzelnen Beitrag anzeigen

DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

Canvas RoundRect aber wie

  Alt 14. Jun 2021, 21:02
Es geht um eine Tableiste, ähnlich TTabControl oder TPageControl.

Die folgenden Punkte eines jeden Tabs sind bekannt
Delphi-Quellcode:
 PL1 := Point(ARect.Left, ARect.Top); // links oben
 PL2 := Point(ARect.Left, ARect.Bottom - 1); // links unten
 PR1 := Point(ARect.Right - 1, ARect.Top); // rechts oben
 PR2 := Point(ARect.Right - 1, ARect.Bottom - 1); // rechts unten
Ich male die Umrandung eines Tabs immer selber mit
Delphi-Quellcode:
DrawLine(C, PL1.X, PL1.Y, PL2.X, PL2.Y + 1, AColorBorder); // LINKS: von links oben nach links unten
DrawLine(C, PR1.X, PR1.Y, PR2.X, PR2.Y + 1, AColorBorder); // RECHTS: von rechts oben nach rechts unten
DrawLine(C, PL1.X, PL1.Y, PR1.X, PL1.Y, AColorBorder); // OBEN: von links oben nach rechts oben

// je nachdem ob ein Tab aktiv ist oder nicht
DrawLine(C, PL2.X, ARect.Bottom, PR2.X, ARect.Bottom, AColorBorderLow); // UNTEN: von links unten nach rechts unten (aktiv)
DrawLine(C, PL2.X + 1, ARect.Bottom, PR2.X - 1, ARect.Bottom, AColorBg); // UNTEN: von links unten nach rechts unten (inaktiv)
Wie kann ich anhand der Punkte PL1 und PL2 jetzt mit RoundRect einen runden Tab malen?
Oder wie kann ich die beiden oberen Ecken links und rechts abrunden?
  Mit Zitat antworten Zitat