Jak pokolorować poszczególne znaki i zachować odpowiednie odstępy / kerning / wyrównanie?

Chcę użyć Graphics.DrawString do rysowania znaków za pomocą indywidualnych kolorów.

Problem polega na tym, że za każdym razem, gdy dzwonię do DrawString, muszę wiedzieć, gdzie go umieścić (za pomocą punktu lub prostokąta) względem innych znaków.

Jest to prawie możliwe, biorąc pod uwagę kerning i zawijanie, które ma miejsce, gdy używasz DrawString w prostokącie za pomocą StringFormat. StringFormat jest ważny, aby określić wyrównanie, zawijanie, przycinanie itd.

Idealnie byłbym w stanie powiedzieć DrawStringowi, jak kolorować każdą postać indywidualnie. Inną opcją jest to, czy mogę zmierzyć łańcuch w prostokącie za pomocą StringFormat, a następnie pobrać pozycje X i Y każdego indeksu znaków, aby móc narysować każdy z nich za pomocą własnego pędzla.

Próbowałem zmierzyć każdy znak osobno, ale to nie zadziała, ponieważ kombinacja znaków w łańcuchu nie jest tej samej szerokości, co każdy znak mierzony samodzielnie.

EDYTOWAĆ: Oto, co się dzieje, gdy biorę sznurek, dostaję tablicę Region, napełniaj regiony naprzemiennie czerwonym i niebieskim, a następnie spróbuj narysować każdą indywidualną postać w tych regionach:

Nazywam DrawString w następujący sposób:

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

Próbowałem również:

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

I,

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

Takie same wyniki.

questionAnswers(1)

yourAnswerToTheQuestion