Chủ đề này đã bị trầy xước một hoặc hai lần, nhưng tôi vẫn còn bối rối. Và Google cũng không thân thiện.Làm thế nào để thiết lập một hệ thống phối hợp Quartz2D của người dùng với tỷ lệ mà tránh được bản vẽ mờ?
Vì Quartz cho phép các hệ tọa độ tùy ý sử dụng biến đổi affine, tôi muốn có thể vẽ những thứ như sơ đồ tầng bằng cách sử dụng tọa độ thực tế, ví dụ: đôi chân. Vì vậy, về cơ bản, vì lợi ích của một ví dụ, tôi muốn mở rộng khung nhìn để khi tôi vẽ một hình chữ nhật 10x10 (ví dụ như hộp 10 inch), tôi nhận được hình chữ nhật 60x60 pixel.
Nó hoạt động, ngoại trừ hình chữ nhật tôi nhận được khá mờ. Một câu hỏi khác ở đây có một câu trả lời giải thích tại sao. Tuy nhiên, tôi không chắc mình hiểu lý do đó, và hơn nữa, tôi không biết cách sửa nó. Đây là mã của tôi:
tôi đặt hệ tọa độ của tôi trong phương pháp xem awakeFromNib
tùy chỉnh của tôi:
- (void) awakeFromNib {
CGAffineTransform scale = CGAffineTransformMakeScale(6.0, 6.0);
self.transform = scale;
}
Và đây là thói quen vẽ của tôi:
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect r = CGRectMake(10., 10., 10., 10.);
CGFloat lineWidth = 1.0;
CGContextStrokeRectWithWidth(context, r, lineWidth);
}
Quảng trường tôi nhận được thu nhỏ tốt , nhưng hoàn toàn mờ nhạt. Chơi với lineWidth
không hữu ích: khi lineWidth
được đặt nhỏ hơn, nó sẽ nhẹ hơn nhưng không sắc nét hơn.
Vậy có cách nào để thiết lập chế độ xem để có hệ tọa độ được chia tỷ lệ để tôi có thể sử dụng tọa độ miền của mình không? Hoặc tôi nên quay trở lại và thực hiện mở rộng quy mô trong thói quen vẽ của tôi?
Lưu ý rằng vấn đề này không xảy ra đối với bản dịch hoặc xoay vòng.
Cảm ơn
Nếu bạn muốn đặt chiều rộng của đường theo điểm bất kể hệ số tỷ lệ, hãy đặt nó thành 'số điểm/hệ số tỷ lệ mong muốn'. Ví dụ: Mặc định là 1 pt/1 × = 1; một dòng 1 pt tại hệ số 6 × của bạn là '1.0/6.0'; một dòng 2 pt sẽ là '2.0/6.0'. –