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

这是翻转它的方法。只需将 2 行添加到您的 drawRect

- (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 回答