Wie färbe ich einzelne Zeichen ein und halte den richtigen Abstand / Kerning / Alignment?

Ich möchte Graphics.DrawString verwenden, um Zeichen mit individuellen Farben zu zeichnen.

Das Problem ist, dass ich jedes Mal, wenn ich DrawString aufrufe, wissen muss, wo ich es (entweder mit einem Punkt oder einem Rechteck) relativ zu den anderen Zeichen positionieren soll.

Dies ist fast möglich, wenn Sie den Kerning- und Wrapping-Effekt berücksichtigen, der auftritt, wenn Sie DrawString in einem Rechteck mit einem StringFormat verwenden. Das StringFormat ist wichtig, um die Ausrichtung, das Umwickeln, das Zuschneiden usw. festzulegen.

Im Idealfall kann ich DrawString mitteilen, wie die einzelnen Zeichen individuell gefärbt werden sollen. Die andere Option ist, wenn ich eine Zeichenfolge in einem Rechteck mit einem StringFormat messen und dann die X- und Y-Positionen jedes Zeichenindex abrufen kann, sodass ich jede mit einem eigenen Pinsel zeichnen kann.

Ich habe versucht, jedes Zeichen einzeln zu messen, aber das funktioniert nicht, da eine Zeichenkombination in einer Zeichenfolge nicht die gleiche Breite wie jedes Zeichen hat, das für sich gemessen wird.

BEARBEITEN: Folgendes passiert, wenn ich einen String nehme, das Array Region erhalte, diese Regionen abwechselnd mit Rot und Blau fülle und dann versuche, jedes einzelne Zeichen in diesen Regionen zu zeichnen:

Ich rufe DrawString folgendermaßen auf:

g.DrawString(character, font, brush, region.GetBounds(g));

Versuchte auch folgendes:

Rectangle bounds = Region.GetBounds(g);
g.DrawString(character, font, brush, new PointF(bounds.Left, bounds.Top));

Und,

g.DrawString(character, font, brush, region.GetBounds(g), stringFormat);

Gleiche Ergebnisse.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage