このトピックは 1 回か 2 回スクラッチされていますが、私はまだ困惑しています。また、Google も友好的ではありませんでした。
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
小さく設定すると、軽くなりますが、鮮明にはなりません。
ドメイン座標を使用できるように、スケーリングされた座標系を持つようにビューを設定する方法はありますか? それとも、元に戻って描画ルーチンにスケーリングを実装する必要がありますか?
この問題は、平行移動または回転では発生しないことに注意してください。
ありがとう