2017-09-11 19 views
-2
TypeConverter converter = TypeDescriptor.GetConverter(typeof(Font)); 
Font font = (Font)converter.ConvertFromString("[Font: Name=Arial, Size=48, Units=3, GdiCharSet=0, GdiVerticalFont=False]"); 
this.Font = font; 

エラー=> System.ArgumentExceptionの:サイズ= 48 ' 'の値、単位= 3は、GdiCharSet = 0、GdiVerticalFont = Falseの場合、]' に対して有効ではありません'ユニット '。がでフォントに文字列を変換できませんC#

+0

このhttps://stackoverflow.com/questions/5039543/change-font-of-a-string-in-c-sharp –

+4

の例から判断を読みます[documentation](https://msdn.microsoft.com/en-us/library/system.drawing.fontconverter(v = vs.110).aspx#Anchor_5)文字列が正しい形式でないように見えますが、あなたはそのフォーマットをどのように使用してきたかについて詳しく説明できますか? –

+0

https://msdn.microsoft.com/en-us/library/system.drawing.fontconverter(v=vs.110).aspx#Examples文字列が正しくないように見える – Hybridzz

答えて

1

ここでの問題は、あなたがサポートしていませんFontConverter文字列を生成するためにFont.ToString()メソッドを使用しましたということです。その.ToString()メソッドを介して実行同じフォントオブジェクトが与える

Arial; 12pt; style=Bold 

[Font: Name=Arial, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False] 

代わりに、あなたはまた、文字列を生成するためにFontConverterを使用する必要があり、あなたが戻って、このように見える文字列を取得します

特定の文字列の代わりに、この文字列を使用する必要があります。

"Arial; 48pt" 
+0

ありがとうございました。これは働いています... –

0

は、以下のことを試してみてください。

TypeConverter converter = TypeDescriptor.GetConverter(typeof(Font)); 
Font font = (Font)converter.ConvertFromString("Arial, 48pt"); 
this.Font = font; 
+0

あなたの答えをありがとう。 –

0

これは、Microsoftによって十分に文書化されていません。

あなたはreference source for FontConverterを見ればしかし、あなたは以下を参照してくださいよ:

internal class UnitName { 

    internal string name; 

    internal GraphicsUnit unit; 

    internal static readonly UnitName[] names = new UnitName[] { 
      new UnitName("world", GraphicsUnit.World), // made up 
      new UnitName("display", GraphicsUnit.Display), // made up 
      new UnitName("px", GraphicsUnit.Pixel), 
      new UnitName("pt", GraphicsUnit.Point), 
      new UnitName("in", GraphicsUnit.Inch), 
      new UnitName("doc", GraphicsUnit.Document), // made up 
      new UnitName("mm", GraphicsUnit.Millimeter), 
     }; 


    internal UnitName(string name, GraphicsUnit unit) { 
     this.name = name; 
     this.unit = unit; 
    } 
} 

あなたがの一つとして単位を指定する必要があるようなので、それが見えます:あなたが必要となります

world | display | px | pt | in | doc | mm 

これらの値の1つをサイズ値の後に後置します。ソースコード内のコメントは述べています:

text is expected to have a format like " 8,25pt 
+0

あなたの答えをありがとう... –

関連する問題