【发布时间】:2012-03-13 14:09:08
【问题描述】:
我正在尝试了解石英 2d 坐标系,目前我正在阅读 Apple 参考指南和旧书“Mac os x 开发人员的石英 2d 图形”。
我理解用户空间和设备空间的概念,设备空间可以有不同的默认坐标系,设备空间坐标不能修改,我们通过修改其坐标系来映射用户空间设备空间来实现期望的结果。
- 问题的第一部分
Mac os x 开发者书籍的 Quartz 2d graphics 说:
当变换一个坐标系时,你必须有另一个 与之比较的坐标系。该转换提供了一个 从一个坐标系到另一个坐标系的相对映射。当你 在变换后的坐标系中绘制,变换映射 图形回到第一个坐标系。那的出现 固定坐标系中的图形受 转型。
我没有用粗体表示这一点。
和
Quartz 2D programming guide 说:
Quartz 通过单独的坐标实现设备独立性 system—用户空间—将其映射到输出的坐标系 设备—设备空间—使用当前变换矩阵或 CTM。一种 矩阵是一种用于有效描述集合的数学结构 的相关方程。当前的变换矩阵是 称为仿射变换的特定类型的矩阵,它映射 通过应用平移从一个坐标空间指向另一个坐标空间, 旋转和缩放操作(移动、旋转和 调整坐标系)。
当前的变换矩阵有一个次要目的:它允许 您可以改变对象的绘制方式。例如,画一个盒子 旋转 45 度,你旋转页面的坐标系 (CTM)在您绘制方框之前。 Quartz 绘制到输出设备 使用旋转坐标系。
令人困惑的是“石英使用旋转坐标系绘制到输出设备。”,如果我想绘制一个旋转的对象(图像等)而另一个不旋转,那么会发生什么?我们已经旋转了整个坐标,每一个被绘制的东西都会被旋转?
我正在尝试不同的实验,但无法解决这个问题,我创建了一个图像,我在 photoshop 中绘制两条线复制左下角坐标系,然后添加到我的项目中,通过调用 CGContextRotateCTM(myContext, 45); 来查看坐标的明显表现在drawrect方法中,但它没有对我使用接口生成器将图像放在uiimage中的xib文件中包含的图像做任何事情。
此代码来自石英 2D 编程指南
CGContextRef myContext = UIGraphicsGetCurrentContext();
CGRect contextRect = self.bounds;
CGContextTranslateCTM(myContext, 0, contextRect.size.height);
CGContextRotateCTM(myContext, 45); //my modification
CGContextScaleCTM(myContext, 1, -1);
float w, h;
w = contextRect.size.width;
h = contextRect.size.height;
CGAffineTransform myTextTransform;
CGContextSelectFont (myContext, "Helvetica-Bold", h/10, kCGEncodingMacRoman);
CGContextSetCharacterSpacing (myContext, 10);
CGContextSetTextDrawingMode (myContext, kCGTextFillStroke);
CGContextSetRGBFillColor (myContext, 0, 1, 0, .5);
CGContextSetRGBStrokeColor (myContext, 0, 0, 1, 1);
myTextTransform = CGAffineTransformMakeRotation(0);
CGContextSetTextMatrix (myContext, myTextTransform);
CGContextShowTextAtPoint (myContext, 0, 50, "Quartz 2D", 9);
但是这段代码修改的是屏幕上绘制的文本而不是我添加的图像?
- 问题的第二部分
这也来自 Quartz 2D 编程指南:
... 应用将原点转换为左上角的变换 PDF 上下文的角并将 y 坐标缩放 -1。
使用缩放变换来否定 y 坐标会改变一些 石英绘图中的约定。例如,如果您调用 CGContextDrawImage 将图像绘制到上下文中,图像是 当它被绘制到目的地时被变换修改。 ...
我已经在做这个 -1 的事情,但对图像没有影响,这个 -1 的事情我仍然不清楚。
我已多次阅读此文档,尝试在 google 上搜索,但没有有用的教程,也没有最新的书籍,只有 2004、2005、2006 年编写的书籍。任何人都可以帮助或可以参考我有用的资源来学习深入这个。
迫切地等待回复,真的需要帮助。 谢谢。
【问题讨论】:
标签: ios core-graphics