我试图将我的绘图区域调整为较小的尺寸,但是每当我这样做时,我都会得到这种输出(参见照片)。
当我开始写时,它不会画线,只会拉伸一切。
我试图找出问题所在,但我所知道的还不够。
这是我的代码:
viewDidLoad:
touchDraw = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"opaque.png"]];
touchDraw.frame = CGRectMake(0, 0, 768, 1024);
[self.view addSubview:touchDraw];
[self.view sendSubviewToBack:touchDraw];
touchMoved = 0;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
touchSwiped = NO;
UITouch *touch = [touches anyObject];
endingPoint = [touch locationInView:self.view];
endingPoint.y -= 35;
}
接触:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
touchSwiped = YES;
UITouch *touch = [touches anyObject];
currentTouch = [touch locationInView:self.view];
currentTouch.y -= 35;
UIGraphicsBeginImageContext(self.view.frame.size);
[touchDraw.image drawInRect:CGRectMake(0, 0, 768, 1024)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
UIImage * textureColor = [UIImage imageNamed:@"Brush_Black.png"];
CGPoint vector = CGPointMake(currentTouch.x - endingPoint.x, currentTouch.y - endingPoint.y);
CGFloat distance = hypotf(vector.x, vector.y);
vector.x /= distance;
vector.y /= distance;
for (CGFloat i = 0; i < distance; i += 1.0f) {
CGPoint p = CGPointMake(endingPoint.x + i * vector.x, endingPoint.y + i * vector.y);
[textureColor drawAtPoint:p blendMode:blendMode alpha:0.5f];
}
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextStrokePath(UIGraphicsGetCurrentContext());
touchDraw.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
endingPoint = currentTouch;
touchMoved++;
if (touchMoved == 1) {
touchMoved = 0;
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if(!touchSwiped) {
UIGraphicsBeginImageContext(self.view.frame.size);
[touchDraw.image drawInRect:CGRectMake(0, 0, touchDraw.frame.size.width, touchDraw.frame.size.height)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 25.0);
UIImage * textureColor = [UIImage imageNamed:@"Brush_Black.png"];
[textureColor drawAtPoint:CGPointMake(endingPoint.x, endingPoint.y) blendMode:blendMode alpha:1.0f];
CGContextStrokePath(UIGraphicsGetCurrentContext());
CGContextFlush(UIGraphicsGetCurrentContext());
touchDraw.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
}
最佳答案
更改此行
UIGraphicsBeginImageContext(self.view.frame.size);
这样
UIGraphicsBeginImageContext(touchDraw.frame.size);
这可能会有所帮助。
关于objective-c - objective-c 调整绘图区域的大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9306786/