Graphics.DrawString を使用して、個々の色を使用して文字を描画したいと考えています。
問題は、DrawString を呼び出すたびに、他の文字に対して (Point または Rectangle を使用して) どこに配置するかを知る必要があることです。
これは、StringFormat を使用して四角形で DrawString を使用するときに発生するカーニングとラッピングを考慮すると、ほぼ可能です。StringFormat は、配置、折り返し、トリミングなどを指定するために重要です。
理想的には、各文字を個別に色付けする方法を DrawString に伝えることができます。もう 1 つのオプションは、StringFormat を使用して四角形内の文字列を測定し、各文字インデックスの X 位置と Y 位置を取得して、独自のブラシでそれぞれを描画できる場合です。
各文字を個別に測定しようとしましたが、文字列内の文字の組み合わせが各文字を個別に測定した幅と同じではないため、うまくいきません。
編集:文字列を取得し、領域配列を取得し、それらの領域を赤と青で交互に塗りつぶし、それらの領域に個々の文字を描画しようとすると、次のようになります。
次のように DrawString を呼び出しています。
g.DrawString(character, font, brush, region.GetBounds(g));
次のことも試しました:
Rectangle bounds = Region.GetBounds(g);
g.DrawString(character, font, brush, new PointF(bounds.Left, bounds.Top));
と、
g.DrawString(character, font, brush, region.GetBounds(g), stringFormat);
同じ結果です。