gpt4 book ai didi

ios - 翻转 CGContext 上的旋转文本

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:14 26 4
gpt4 key购买 nike

图片:http://i.stack.imgur.com/pbzar.png

我想获得 90-270 度的文本(文本“Aroma 7”到“Aroma 17”),旋转 180 度。

我的代码:

 for (int i=0; i<24; i++) {
CGContextSaveGState(context);
CGContextRef context = UIGraphicsGetCurrentContext();
NSString *str = [NSString stringWithFormat:@"Aroma %d", i];

CGContextTranslateCTM(context, radius, radius);
CGContextRotateCTM(context, i * 15 * M_PI/180.0);
[[UIColor whiteColor] set];

CGContextTranslateCTM(context, - (radius), -(radius));

CGSize size = [str sizeWithFont:[UIFont fontWithName:@"Helvetica" size:12.0]
constrainedToSize:rect.size
lineBreakMode:(NSLineBreakByWordWrapping)];

[str drawAtPoint:CGPointMake(((radius * 2) - 10) - size.width, radius) withFont:[UIFont fontWithName:@"Helvetica" size:12.0]];


CGContextRestoreGState(context);
}

感谢您的帮助!

最佳答案

这应该会产生想要的输出:

for (int i=0; i<24; i++) {
CGContextSaveGState(context);
CGContextRef context = UIGraphicsGetCurrentContext();
NSString *str = [NSString stringWithFormat:@"Aroma %d", i];

CGContextTranslateCTM(context, radius, radius);
CGContextRotateCTM(context, i * 15 * M_PI/180.0);
[[UIColor whiteColor] set];
CGSize size = [str sizeWithFont:[UIFont fontWithName:@"Helvetica" size:12.0]
constrainedToSize:rect.size
lineBreakMode:(NSLineBreakByWordWrapping)];

CGContextTranslateCTM(context, radius-10-size.width/2, size.height/2); // (1)
if (i >= 7 && i <= 17)
CGContextRotateCTM(context, M_PI); // (2)
[str drawAtPoint:CGPointMake(-size.width/2, -size.height/2) withFont:[UIFont fontWithName:@"Helvetica" size:12.0]];

CGContextRestoreGState(context);
}

想法是将坐标系的原点移动到要绘制文本的矩形的中心(参见(1))。然后您可以简单地将文本旋转 180 度(参见 (2))。

这是我的测试程序的输出:

enter image description here

关于ios - 翻转 CGContext 上的旋转文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14607259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com