Ten temat został porysowany raz lub dwa razy, ale nadal jestem zdziwiony. Google też nie był przyjazny.Jak skonfigurować układ współrzędnych Quartz2D użytkownika ze skalowaniem unikającym rysowania rozmytego?
Ponieważ mechanizm kwarcowy zezwala na dowolne układy współrzędnych wykorzystujące transformacje afiniczne, chcę móc rysować takie rzeczy, jak plany pięter z rzeczywistą współrzędną, np. stopy.
Tak więc, na zasadzie przykładu, chcę przeskalować widok, aby podczas rysowania prostokąta o wymiarach 10x10 (na przykład o 10-calowym polu) otrzymywałam prostokąt o wymiarach 60 x 60 pikseli.
Działa, z wyjątkiem prostokąta, który otrzymuję, jest dość rozmyta. Kolejne pytanie tutaj dostałem odpowiedź, która wyjaśnia dlaczego. Jednak nie jestem pewien, czy rozumiem ten powód, a co więcej, nie wiem, jak to naprawić. Tu jest mój kodu:
mogę ustawić układ współrzędnych w moim awakeFromNib
niestandardowego sposobu widzenia:
- (void) awakeFromNib {
CGAffineTransform scale = CGAffineTransformMakeScale(6.0, 6.0);
self.transform = scale;
}
I tu jest moje losowanie rutyna:
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect r = CGRectMake(10., 10., 10., 10.);
CGFloat lineWidth = 1.0;
CGContextStrokeRectWithWidth(context, r, lineWidth);
}
Plac uzyskać skalowany jest w porządku , ale całkowicie niewyraźne. Zabawa z lineWidth
nie pomaga: gdy ustawienie lineWidth
jest mniejsze, staje się jaśniejsze, ale nie ostrzejsze.
Czy istnieje sposób skonfigurowania widoku na skalowany układ współrzędnych, aby można było używać współrzędnych domeny? A może powinienem wrócić i wdrożyć skalowanie w moich procedurach rysowania?
Należy zauważyć, że ten problem nie występuje podczas tłumaczenia lub obrotu.
Dzięki
Jeśli chcesz ustawić szerokość linii w punktach niezależnie od współczynnika skali, ustaw go na "pożądaną liczbę punktów/współczynnik skali". Przykłady: Wartość domyślna to 1 pt/1 × = 1; linia 1-punktowa w twoim współczynniku 6 × wynosi '1.0/6.0'; linia 2-punktowa to "2.0/6.0". –