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);
あなたはうまく翻訳できますが、物事はまだ隅にスケーリングされます. どうしたの?
編集:ああ。わお。当たり前。原点を移動すると形状も移動するため、形状に対して相対的に移動することはできません。何が問題なのかはわかりましたが、どうすればよいでしょうか?(形状とは別に原点を移動します)