gpt4 book ai didi

objective-c - Objective C 调整绘图区域的大小

转载 作者:行者123 更新时间:2023-11-29 04:48:13 25 4
gpt4 key购买 nike

enter image description here

我正在尝试将绘图区域调整为较小的尺寸,但每当我这样做时,我都会得到这种输出(参见照片)。

当我开始写作时,它不会画一条线,而是拉伸(stretch)所有内容。

我试图找出问题所在,但我所知道的还不够。

这是我的代码:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com