这确实很痛苦,但是当我在 -drawRect: 中绘制 UIImage 时,它总是颠倒的。
当我翻转坐标时,图像绘制正确,但代价是所有其他 CG 函数绘制“错误”(翻转)。
当你必须绘制图像和其他东西时,你的策略是什么?有什么经验法则可以避免一次又一次陷入这个问题吗?
此外,当我翻转 y 轴时,一件令人讨厌的事情是,UIImageView 框架中的 CGRect 是错误的。原点没有像预期那样出现在左上角 10,10,而是出现在底部。
但与此同时,CGContext 的所有正常画线函数都采用正确的坐标。在 -drawRect 中以左上角为原点 10,10 绘制一条线,实际上会从左上角开始。但同时这也很奇怪,因为核心显卡实际上有一个翻转的坐标系,y 0 位于底部。
所以看起来有些东西确实不一致。使用 CGContext 函数绘图将坐标视为“预期”(来吧,没有人认为坐标是从左下角开始的,这很愚蠢),而绘制任何类型的图像仍然以“错误”的方式工作。
你使用辅助方法来绘制图像吗?或者有什么有用的东西可以让图像绘制不再是一件痛苦的事情?
最佳答案
问题:原点在左下角;正 y 向上(负 y 向下)。
目标:原点在左上角;正 y 向下(负 y 向上)。
解决方案:
- 将原点向上移动 View 的高度。
- 对 y 轴取负值(乘以 -1)。
在代码中执行此操作的方法是 translate向上移动 View 边界的高度和 scale按 (1, -1) 的顺序。
Quartz 2D Programming Guide 有几个部分与此主题相关的,包括 “Drawing to a Graphics Context on iPhone OS”和整个chapter on Transforms 。当然,您确实应该阅读整篇文章。
关于iphone - 如何补偿核心显卡坐标系翻转,方便绘图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2695262/