2

カスタムコントロールに任意のテキストを書き込もうとしています。
私のコードは機能しますが、üなどの文字を描画しようとすると、文字がある場所に空の正方形が表示されます。
ローカリゼーションをサポートするつもりなので、これが機能する必要があります。
すでにチェックしましたが、タホマには必要なキャラクターがいます。私のコードは以下の通りです:

string _Label = "Zurück";
Font labelFont = new Font("Tahoma", 9, FontStyle.Bold);
SizeF labelSize = e.Graphics.MeasureString(_Label, labelFont);
this.Width = (int)(labelSize.Width + this.Padding.Horizontal);
e.Graphics.DrawString(_Label, labelFont, Brushes.White, new PointF(this.Padding.Left, this.Padding.Top));

誰もがこれを修正する方法を知っていますか?

4

2 に答える 2

1

使用するフォントにグリフが含まれていない場合は、長方形が表示されます。そうではないことをご存知でしょう、タホマは間違いなくüを持っています。つまり、本当の問題は、ファイルを正しく実際に作成しなかったことです。

ファイル内のテキストがどのようにエンコードされているかを調べる必要があります。StreamReaderのデフォルトであるUTF8ではないことをご存知でしょう。次の推測はおそらく次のようになります。

        var sr = new StreamReader(path, Encoding.Default);
        // Read file...
于 2010-08-18T01:59:47.773 に答える
0

フォントが文字をサポートしていることを確認し(charmapなどを使用)、Unicodeを使用します。

例:\u00FCはあなたが探しているキャラクターでなければなりません

Unicodeとしてファイルを読み込む:

StreamReader UnicodeFileRead new StreamReader(input, System.Text.Encoding.Unicode);
于 2010-08-17T23:15:04.187 に答える