使用CGContextShowAtPoint时,为什么我的文字会翻转?

时间:2010-07-05 22:05:02

标签: iphone objective-c

我正在写一个简单的练习。但是,当我尝试使用CGContext在UIView上添加一些字符串时,我的文字翻转过来,我想知道为什么以及如何将其更改为正确的格式。

这是我在drawRect

中的代码
    char *string = "TEST";
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextBeginPath(context);
CGContextSelectFont (context,"Helvetica-Bold",12, kCGEncodingMacRoman); 

CGContextShowTextAtPoint(context, 5, 5, string, strlen(string));

CGContextClosePath(context);

Thanx求助。

3 个答案:

答案 0 :(得分:5)

CoreGraphics使用笛卡尔坐标,因此您需要在进行任何绘图之前翻译上下文

CGContextRef context = UIGraphicsGetCurrentContext();

// transforming context
CGContextTranslateCTM(context, 0.0, rect.size.height);
CGContextScaleCTM(context, 1.0, -1.0);

// your drawing code

答案 1 :(得分:5)

Quartz2D有一个倒y轴 - 方便吗?如果您在drawRect方法中,则可以使用以下内容翻转文本。

CGContextTranslateCTM(context, 0.0, rect.size.height);
CGContextScaleCTM(context, 1.0, -1.0);

另一种方式是;

transform = CGAffineTransformMake(1.0,0.0,0.0,-1.0,0.0,0.0);
CGContextSetTextMatrix(context, transform);

或者在一条线上;

CGContextSetTextMatrix(context, CGAffineTransformMake(1.0,0.0, 0.0, -1.0, 0.0, 0.0));

答案 2 :(得分:2)

使用UIKit additions in NSString

NSString *string = @"TEST";
[string drawAtPoint:CGPointMake(5, 5)
           withFont:[UIFont boldSystemFontOfSize:12]];