Ширина CGContext кажется чрезмерно растянутой - PullRequest
0 голосов
/ 05 июля 2010

Я работаю с CGContext, чтобы создать простой квадрат с четырьмя заданными точками (точки должны составлять идеальный квадрат). Однако вместо квадрата размером 200 на 200 пикселей приложение для iPad выглядит примерно так: 680 Вт на 300 часов. Я что-то упустил?

int beginPointX, beginPointY, gridSize, gridPadding;

gridSize = 200;
gridPadding = 10;

beginPointX = gridPadding; // padding from left border
beginPointY = gridPadding; // padding from top border


// initiate UIGraphics method
UIGraphicsBeginImageContext(self.view.frame.size);

// set context for our UIGraphics method
CGContextRef context = UIGraphicsGetCurrentContext();

// set some defaults for our CGContext
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0);
CGContextSetLineWidth(context, 1.0);
CGContextBeginPath(context);


// start

// build outer box
CGRect testRect = CGRectMake(beginPointX, beginPointY, (beginPointX + gridSize), (beginPointY + gridSize));
CGContextAddRect(context, testRect);
CGContextStrokePath(context);

/*
NSLog(@"Line from %dx%d to %dx%d", beginPointX, beginPointY, beginPointX, (beginPointY + gridSize));
CGContextMoveToPoint(context, beginPointX, beginPointY);
CGContextAddLineToPoint(context, beginPointX, (beginPointY + gridSize));
CGContextStrokePath(context);

NSLog(@"Line from %dx%d to %dx%d", beginPointX, (beginPointY + gridSize), (beginPointX + gridSize), (beginPointY + gridSize));
CGContextMoveToPoint(context, beginPointX, (beginPointY + gridSize));
CGContextAddLineToPoint(context, (beginPointX + gridSize), (beginPointY + gridSize));
CGContextStrokePath(context);

NSLog(@"Line from %dx%d to %dx%d", (beginPointX + gridSize), (beginPointY + gridSize), (beginPointX + gridSize), beginPointY);
CGContextMoveToPoint(context, (beginPointX + gridSize), (beginPointY + gridSize));
CGContextAddLineToPoint(context, (beginPointX + gridSize), beginPointY);
CGContextStrokePath(context);

NSLog(@"Line from %dx%d to %dx%d", (beginPointX + gridSize), beginPointY, beginPointX, beginPointY);
CGContextMoveToPoint(context, (beginPointX + gridSize), beginPointY);
CGContextAddLineToPoint(context, beginPointX, beginPointY);
CGContextStrokePath(context);
*/

// insert set of instructions into our grid pointer
grid.image = UIGraphicsGetImageFromCurrentImageContext();

Следует отметить, что я работаю над приложением для iPad, ориентация которого привязана к ландшафту (если это имеет значение).

1 Ответ

1 голос
/ 05 июля 2010
CGRect CGRectMake (
   CGFloat x,
   CGFloat y,
   CGFloat width,
   CGFloat height
);

Итак, эта строка

CGRect testRect = CGRectMake(beginPointX, beginPointY, (beginPointX + gridSize), (beginPointY + gridSize));

должна быть

CGRect testRect = CGRectMake(beginPointX, beginPointY, gridSize, gridSize);
...