Axesdrawer Stanford cs193p Пиксели и очки - PullRequest
0 голосов
/ 02 апреля 2012

Я беру курс CS 193p из Стэнфорда (в iTunesU) и пытаюсь понять класс AxesDrawer, который они предоставляют для Задания 3, особенно эти строки являются частью метода drawHashMarksInRect

#define HASH_MARK_SIZE 3
#define MIN_PIXELS_PER_HASHMARK 25
+ (void)drawHashMarksInRect:(CGRect)bounds originAtPoint:(CGPoint)axisOrigin scale: (CGFloat)pointsPerUnit
{
.....
int unitsPerHashmark = MIN_PIXELS_PER_HASHMARK * 2 / pointsPerUnit;
if (!unitsPerHashmark) unitsPerHashmark = 1;
CGFloat pixelsPerHashmark = pointsPerUnit * unitsPerHashmark;
....
}

Как говорят, что они работают с пикселями и не используют свойство contentScaleFactor? они на самом деле используют пиксели или просто точки и неправильно используют термин? Вот код AxesDrawer

Ответы [ 2 ]

0 голосов
/ 25 февраля 2015

Но contentScaleFactor - это количество пикселей на точку.Так что в случае высокого разрешения у него будет больше пикселей на точку.Однако, поскольку мы имеем дело с точками, разве система не должна заботиться о себе, не привлекая нас?

0 голосов
/ 20 апреля 2012

Класс правильно обрабатывает точку как точку - это означает, что ваши bounds.size.width и bounds.size.height имеют те же размеры, что и размер экрана iPhone 3GS в пикселях ...

Если вы компилируете в подключенные 3G, масштабный коэффициент контента равен 1.

Если вы подключены к iPhone 4 или 4s, коэффициент масштабирования контента равен 2.

Однако AxesDrawer рассматривает масштаб как pointsPerUnit, который на iPhone 4 равен 0,5, поэтому масштаб, который вы передаете ему, равен 0,5

Вы получаете это, помещая следующее в класс UIView для графического представления;

CGFloat screenScale = self.contentScaleFactor;
CGFloat scaleForAxesDrawer = 1 / screenScale;
[[self.axes class] drawAxesInRect:graphArea originAtPoint:axisPoint scale:scaleForAxesDrawer];
// where graphArea is a CGRect and axisPoint is a CGPoint

например.

AxesDrawer будет размещать хеш-метку и число вдоль оси не менее чем каждые 25 пикселей.

...