0

次のようにしてコアグラフィックにテキストを描画しています

- (void)drawRect:(CGRect)rect {
    CGContextTranslateCTM(context, 20, 150);
    CGContextScaleCTM(context, 1, 1);

    // Draw the text using the MyDrawText function
    myDrawText(context, viewBounds);

}
void myDrawText (CGContextRef myContext, CGRect contextRect) 
{
    CGFloat w, h;
    w = contextRect.size.width;
    h = contextRect.size.height;

    CGAffineTransform myTextTransform;
    CGContextSelectFont (myContext, 
                         "Helvetica-Bold",
                         h/12,
                         kCGEncodingMacRoman);
    CGContextSetCharacterSpacing (myContext, .5); 
    CGContextSetTextDrawingMode (myContext, kCGTextFill); 

    CGContextSetRGBFillColor (myContext, 1, 1, 1, 1); 
    myTextTransform =  CGAffineTransformMakeRotation  (0); 
    CGContextSetTextMatrix (myContext, myTextTransform); 
    CGContextShowTextAtPoint (myContext, 115, 0, "Successful", 10); 
}

それを実行した後、私はテキストが下のように逆さまになっているのを取得しています ここに画像の説明を入力してください

描画後にテキストが上下逆になる理由

この問題について私にアドバイスしてください。

4

2 に答える 2

1

CGContextSetTextMatrix (myContext, myTextTransform);

この線を変更して、同一性ではなく、垂直方向に-1にスケーリングし、高さだけ垂直方向にオフセットするようにする必要があります。

編集:申し訳ありませんが、その行ではなく、グラフィックコンテキストを反転し、その行をCGAffineTransformIdentityに変更する必要があります。Core Textのチュートリアルには、テキストを正しい方法で描画するために必要な線が含まれています。

于 2012-10-21T23:30:47.533 に答える
1

ひっくり返す方法です。drawRect に 2 行追加するだけです

- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 20, 150);
CGContextScaleCTM(context, 1, 1);
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, 0);
CGContextConcatCTM(context, flipVertical);

// Draw the text using the MyDrawText function
myDrawText(context, self.bounds);

}
于 2012-10-22T02:00:17.377 に答える