Эта тема была поцарапана один или два раза, но я все еще озадачен. И Google тоже не дружил.
Поскольку Кварц допускает произвольные системы координат, использующие аффинные преобразования, я хочу иметь возможность рисовать такие вещи, как планы этажей, используя реальные координаты, например, футов.
Таким образом, для примера я хочу масштабировать вид так, чтобы при рисовании прямоугольника 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
установлен меньше, он становится светлее, но не четче.
Так есть ли способ настроить вид, чтобы иметь масштабированную систему координат, чтобы я мог использовать мои доменные координаты? Или я должен вернуться к реализации масштабирования в моих процедурах рисования?
Обратите внимание, что эта проблема не возникает при переводе или ротации.
Спасибо