我想将这个用户绘制的图像用于随后的游戏 - 我需要它做得更小并且转到屏幕顶部以便它可以左右移动(闪避对象)。我接下来该怎么办?
@implementation DrawView
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
// Initialization code.
}
return self;
}
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code.
CGColorRef yellow = [[UIColor yellowColor] CGColor];
CGColorRef red = [[UIColor redColor] CGColor];
CGColorRef blue = [[UIColor blueColor] CGColor];
context = UIGraphicsGetCurrentContext();
// draw tryangle
CGContextBeginPath(context);
// give vertices
CGContextMoveToPoint(context, point.x, point.y);
CGContextAddLineToPoint(context, point.x+10, point.y);
CGContextAddLineToPoint(context, point.x+10, point.y+10);
CGContextAddLineToPoint(context, point.x, point.y+10);
CGContextClosePath(context);
// fill the path
CGContextSetFillColorWithColor(context, red);
CGContextFillPath(context);
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
touch=[[event allTouches]anyObject];
point= [touch locationInView:touch.view];
[self setNeedsDisplayInRect:CGRectMake(point.x, point.y, 10, 10)];
}
- (void)dealloc {
[super dealloc];
}
@end
答案 0 :(得分:1)
至于如何创建一个允许用户绘制图片的程序,这是一个比stackoverflow问题更重要的问题。但我们假设您已获得用户输入并将其表示为一组点,颜色等。您有正确的想法使用drawRect在视图中绘制该变量内容。
但是,不是每次移动内容都重绘内容,只需在视图中的相同位置绘制内容并移动整个视图。例如,而不是绘制带角落的正方形
(point.x,point.y),(point.x + 10,point.y),(point.x + 10,point.y + 10),(point.x,point.y + 10)
画一个有角落的正方形
(0,0),(10,0),(10,10),(0,10)
然后在touchesMoved而不是setNeedsDisplay的行中,写下
self.center = point;
另外,为了使其更小,您可以设置视图的transform属性。因此,假设视图自然地将自己绘制得很大,用户绘制它的方式,然后使它更小,你可以编写
self.transform = CGAffineTransformMakeScale(0.1, 0.1);
这将使其达到十分之一。