这个话题已经被划过一两次了,但我还是很疑惑。谷歌也不友好。
由于 Quartz 允许使用仿射变换的任意坐标系,我希望能够使用现实生活中的坐标(例如英尺)绘制诸如平面图之类的东西。
所以基本上,为了一个例子,我想缩放视图,这样当我绘制一个 10x10 的矩形(例如一个 10 英寸的盒子)时,我得到一个 60x60 像素的矩形。
它有效,除了我得到的矩形非常模糊。此处的另一个问题得到了解释原因的答案。但是,我不确定我是否理解这个原因,而且我不知道如何解决它。这是我的代码:
我在awakeFromNib
自定义视图方法中设置了坐标系:
- (void) awakeFromNib {
CGAffineTransform scale = CGAffineTransformMakeScale(6.0, 6.0);
self.transform = scale;
}
这是我的绘图程序:
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect r = CGRectMake(10., 10., 10., 10.);
CGFloat lineWidth = 1.0;
CGContextStrokeRectWithWidth(context, r, lineWidth);
}
我得到的正方形缩放得很好,但完全模糊。玩弄lineWidth
没有帮助:当lineWidth
设置较小时,它会变得更轻,但不会更脆。
那么有没有办法将视图设置为具有缩放坐标系,以便我可以使用我的域坐标?或者我应该返回并在我的绘图程序中实现缩放?
请注意,平移或旋转不会出现此问题。
谢谢