在 Quartz 中旋转图像?图片颠倒了! (iPhone)

发布于 2024-08-27 12:42:59 字数 625 浏览 7 评论 0原文

  • 我不想改变整个环境。

我正在用 Quartz 制作一个游戏,并用直线、矩形和椭圆来绘制我的玩家。

然后我在屏幕左上角的 0,0 处渲染了diamong.png。

问题是......

它呈现颠倒!

我怎样才能将它旋转180度?

这是我的一些代码:

CGImageRef diamondImage = CGImageRetain([UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"Diamond.png" ofType:nil]].CGImage);
CGContextDrawImage(context, CGRectMake(0, 0, 32, 24), diamondImage);

如果有任何帮助,我正在使用横​​向模式,主页按钮位于右侧。它在我的 .plist 和 ViewController 中定义

-shouldAutorotateToInterfaceOrientation:interfaceOrientation:

我将如何旋转/变换它?

  • I don't want to transform the ENTIRE context.

I'm making a game with Quartz, and I'm drawing my player with lines, rects and ellipses.

And then I have diamong.png which I rendered at 0,0 in the top left of the screen.

Problem is...

It renders upside down!

How would I rotate it 180 degrees?

Here's some of my code:

CGImageRef diamondImage = CGImageRetain([UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"Diamond.png" ofType:nil]].CGImage);
CGContextDrawImage(context, CGRectMake(0, 0, 32, 24), diamondImage);

If it's of any help, I'm using Landscape mode, with home button to the right. It's defined both in my .plist, and in my ViewController's

-shouldAutorotateToInterfaceOrientation:interfaceOrientation:

How would I rotate/transform it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟雨凡馨 2024-09-03 12:42:59

为什么不使用

[[UIImage imageWithContentsOfFile:…] drawInRect:CGRectMake(0, 0, 32, 24)];

?这会为您处理坐标变换。


如果必须使用CGContextDrawImage,则转换整个上下文是唯一的方法。您可以使用以下方法恢复到原始状态:

CGContextSaveGState(context);
// transform ...
// draw ...
CGContextRestoreGState(context);

Why not use

[[UIImage imageWithContentsOfFile:…] drawInRect:CGRectMake(0, 0, 32, 24)];

? This take cares of the coordinate transforms for you.


If CGContextDrawImage must be used, transforming the entire context is the only way. You can restore to the original state using:

CGContextSaveGState(context);
// transform ...
// draw ...
CGContextRestoreGState(context);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文