Laden...

Text in einer gefüllten Ellipse darstellen

Erstellt von flacker vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.307 Views
F
flacker Themenstarter:in
33 Beiträge seit 2014
vor 9 Jahren
Text in einer gefüllten Ellipse darstellen

Hallo,

ich habe folgendes Problem. Ich zeichne eine Ellipse mithilfe eines GraphicPath in einer PictureBox. In dieser Ellipse soll ein Text stehen. Dafür füge ich dem GraphicPath welche im Moment meine Ellipse enthält noch einen String hinzu. Wenn ich nun die Ellipse in meiner PictureBox bewege, bewegt sich auch der String mit.
Soweit so gut. Jetzt möchte ich die Ellipse gerne ausgefüllt haben. Dies mache ich mit graphics.FillPath. Dadurch wird die Schrift unleserlich und der Kreis weist Lücken auf.

Wie kann ich die Ellipse mit einer Farbe ausfüllen und einen Text auf dieser ausgefüllten Ellipse abbilden? Dabei ist aber bitte zu beachten, dass der Text an der Ellipse gebunden sein muss.

Ich hoffe ihr könnt mir weiter helfen. Sollte noch etwas unklar sein, fragt einfach und ich werde versuchen alle Fragen bestmöglich zu beantworten.

Mit freundlichen Grüßen,

flacker

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo flacker,

eine Ellipse kann immer in ein Rechteck eingeschrieben werden. Diese Rechteck kannst du leicht (aktuell) berechnen/ermitteln und als Parameter von DrawString verwenden (*), wobei du zusätzlich den Parameter sf übergibst:

sf = new StringFormat ();
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;

Dadurch ist der Text genau in der Mitte der Ellipse.

Text einem Graphics-Path hinzuzufügen macht meiner Erfahrung nach nur Probleme.

herbivore

PS: (*) DrawString erwartet ein Rectangle. Da ein Rectangle nur Rechtecke repräsentieren kann, deren Kanten parallel zu den Koordinatenachsen laufen, müssen für meinen Vorschlag auch der maximale und minimale Durchmesser der Ellipse parallel zu den Koordinatenachsen laufen, aber das ist hier wohl der Fall. Wenn nicht, müsste man die Ausgabe von DrawString mittels z.B. Graphics.RotateTransform noch entsprechend drehen.

F
flacker Themenstarter:in
33 Beiträge seit 2014
vor 9 Jahren

Vielen dank für die Antwort, funktioniert wunderbar. Schlimm das man auf sowas einfaches nicht alleine kommt