2

我对quartz2d的理解是代码CGContextTranslateCTM(context, x, y);翻译了坐标系。我有一个quartz2d 视图,上面有很多形状,用户需要能够平移和缩放它。但是,在使用CGContextScaleCTM(context, scaleX, scaleY);代码时,一切都围绕原点进行缩放,而不是用户正在查看的视点中心。

我对此的解决方案是使用以下代码:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 512.0+offset.x, 384.0+offset.y);  
//(512, 384) is the center of the iPad screen
CGContextScaleCTM(context, scale, scale);

你可以很好地翻译,但事情仍然会缩小到角落。怎么了?

编辑:哦。哇。呃。如果移动原点,形状也会移动,因此您不能相对于形状移动它。现在我知道出了什么问题,但我该怎么做?(独立于形状移动原点)

4

2 回答 2

0

您可以为每个形状创建一个 UIView 类。为每个要移动的形状实例化一个 UIView 对象。

然后你用 shape.center = CGPointMake(x,y); 改变视图对象的中心。可能方法是调用bounds.center,查看UIView。

这将自动调用 drawRect() 一切都很好!

于 2012-11-30T22:47:14.170 回答
0

没有太多使用 CoreGraphics C API 的经验,但是您是否考虑过将视图粘贴到 UISCrollView 上?如果功能存在并且免费,为什么不使用它呢?

于 2011-01-15T00:50:45.820 回答