2011-10-17 11 views
2

私は90度回転したテキストを書く必要があります。 UILabelはCGAffineTransformで回転して私が最初に試さ:CoreTextをMonoTouchで使用して回転テキストを書き込むにはどうすればよいですか?

this.myLabel.Center = this.myLabel.Frame.Location; 
this.myLabel.Transform = CGAffineTransform.MakeRotation (-(float)Math.PI/2.0f); 

はそれはそれはちょうど右回転しますが、フォントがぼやけて読みにくいすべて見えます。

ぼやけて見えないUILabelで簡単なテキストローテーションを行うCoreTextライブラリを使用する方法はありますか?

ありがとうございます!

答えて

2

あなたはXamarinは、(非回転)テキストを描画するCoreTextを使用githubの上sampleを提供し、それを逃した場合。

テキストはパスとして終了するので、テキスト全体を回転させるのは難しくありません。 OTOH CoreTextは、古いAPIよりも複雑です。これは、より多くの制御を行うために支払う代金です。

+0

ありがとう、それはまさに私が探していたものです! –

1

Core Graphicsを使用できます。それは少し関与しているが、トリックを行うだろう。

サンプルは次のようになります。

void MyDrawText (CGContextRef myContext, CGRect contextRect) // 1 
{ 
float w, h; 
w = contextRect.size.width; 
h = contextRect.size.height; 

CGAffineTransform myTextTransform; // 2 
CGContextSelectFont (myContext, // 3 
       "Helvetica-Bold", 
       h/10, 
       kCGEncodingMacRoman); 
CGContextSetCharacterSpacing (myContext, 10); // 4 
CGContextSetTextDrawingMode (myContext, kCGTextFillStroke); // 5 

CGContextSetRGBFillColor (myContext, 0, 1, 0, .5); // 6 
CGContextSetRGBStrokeColor (myContext, 0, 0, 1, 1); // 7 
myTextTransform = CGAffineTransformMakeRotation (myRadianRotation); // 8 
CGContextSetTextMatrix (myContext, myTextTransform); // 9 
CGContextShowTextAtPoint (myContext, 40, 0, "Quartz 2D", 9); // 10 
} 
+0

ありがとうございますが、あなたのコードはMonoTouchでは動作しません。私はそれを変換しようとしましたが、多くの値に対して同等のパラメータはありません(つまり、モノタッチ "h/10"は何ですか?) –

関連する問題