Основная графика перетаскивает пиксели вместо точек - PullRequest
0 голосов
/ 19 февраля 2012

Хорошо, я нигде не нашел.Что мне делать, если я хочу рисовать с основной графикой на пиксель?Как ... Я хочу нарисовать линию в пикселях (45,61) и затем (46,63) вместо рисования в точку (23,31) или что-то в этом роде.Так что мне делать в этом случае?

Должен ли я использовать что-то вроде:

CGContextAddLineToPoint(context,22.5,30.5);
CGContextAddLineToPoint(context,23,31.5);

Или есть какой-то лучший способ?я должен использовать его как ( при построении какой-то функции, например ):

for(int x=bounds.origin.x; x<=bounds.origin.x+bounds.size.width*[self contentScaleFactor]; i++)
    CGContextAddLineToPoint(context,x/[self contentScaleFactor],y(x/[self contentScaleFactor]));

Я знаю, что пример кода не великолепен, но я думаю, вы поймете идею.

Я буду очень благодарен за помощь, потому что я немного запутался со всеми этими коэффициентами .

1 Ответ

1 голос
/ 25 февраля 2012

Похоже, вы выполняете Assignment3 из Стэнфордского курса iOS uTunes? :)
Я думаю, что вы на правильном пути, так как моя реализация выглядит очень похоже:

</p> <pre><code>for(int x=self.bounds.origin.x; x<=self.bounds.origin.x + (self.bounds.size.width * self.contentScaleFactor); x++) { // get the scaled X Value to ask dataSource CGFloat axeX = (x/self.contentScaleFactor - self.origin.x) / self.scale; // using axeX here for testing, which draws a x=y graph // replace axeX with the dataSource Y-Point calculation CGFloat axeY = -1 * ((axeX * self.scale) + self.origin.y); if (x == self.bounds.origin.x) { CGContextMoveToPoint(context, x/self.contentScaleFactor, axeY); } else { CGContextAddLineToPoint(context, x/self.contentScaleFactor, axeY); } }


Протестировано на iOS-Sim iPhone4 (contentScaleFactor 1.0) + устройство iPhone4S (contentScaleFactor 2.0).
Буду рад возможному улучшению работы других читателей, потому что я все еще учусь.

...