我有一个应用程序的iphone版本,可以从存储在Core Data中的CGPoints中在屏幕上绘制线条。所有的图纸都是基于线的,没有任何填充,所以基本上它从给定点到下一个点等画一条线。
现在我正在制作一个iPad版本,我想使用相同的点(这些点是用我为跟踪屏幕而构建的功能收集的,这是很多工作所以我希望重用我所拥有的相同点)
是否有任何身体有一个想法,算法或函数用于从相同点但是X2尺寸绘制相同的线?
这是绘制方法:(从Apple的GLPaint示例中取出)
- (void) playback:(NSNumber*)index
{
if (p==0) {
pointsCount=[[localpoints objectAtIndex:[index intValue]] count]-1;
}
isPlayBackOn = YES;
LetterPoint *point1 = (LetterPoint*)[[localpoints objectAtIndex:[index intValue]] objectAtIndex:p];
CGPoint p1 = CGPointFromString(point1.float_point);
LetterPoint *point2 = (LetterPoint*)[[localpoints objectAtIndex:[index intValue]] objectAtIndex:p+1];
CGPoint p2 = CGPointFromString(point2.float_point);
[self renderLineFromPoint:p1 toPoint:p2];
p++;
if(p<pointsCount){
[self performSelector:@selector(playback:) withObject:index afterDelay:0.03];
}else {
p=0;
isPlayBackOn = NO;
}
}
感谢
SHANI
答案 0 :(得分:2)
创建一个比例因子为2.0
的仿射变换矩阵(如果要移动绘图的原点,则可能是平移)。然后将该变换应用于CGPointApplyAffineTransform()
的每个点,并使用结果点进行绘制。
答案 1 :(得分:2)
好吧,只需加倍p1.x和p1.y ...... 用它来改造它:
而不是:
CGPoint p1 = CGPointFromString(point1.float_point);
这样做:
CGPoint p1Temp = CGPointFromString(point1.float_point);
CGPoint p1 = CGPointMake(p1Temp.x * 2, p1Temp.y * 2);
和p2相同......