Tôi đang vẽ các đường theo phương pháp touchesMoved:
và thông thường nó hoạt động tốt. Nhưng khi tôi phóng to hình ảnh và vẽ, các đường vẽ trước đó đều bị dịch chuyển và tiếp tục ngày càng mờ đi, cuối cùng biến mất. Tôi đã thử sử dụng UIPinchGestureRecognizer
và chỉ cần tăng frame
của myImageView
(chỉ dành cho các sự kiện đa chạm) nhưng sự cố xảy ra theo cả hai cách. Dưới đây là đoạn code để vẽ:CGContextStrokePath không hoạt động khi phóng to và vẽ hình ảnh
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSArray *allTouches = [touches allObjects];
int count = [allTouches count];
if(count==1){//single touch case for drawing line
UITouch *touch = [touches anyObject];
CGPoint currentPoint = [touch locationInView:myImageView];
UIGraphicsBeginImageContext(myImageView.frame.size);
[drawImage.image drawInRect:CGRectMake(0, 0, myImageView.frame.size.width, myImageView.frame.size.height)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 2.0);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
lastPoint = currentPoint;
}
else{//multi touch case
// handle pinch/zoom
}
}
đây là hình ảnh được vẽ trên mà không cần phóng to:
Và đây là hình ảnh miêu tả các vấn đề sau khi phóng to-in với mũi tên đỏ cho thấy phân khúc đã được vẽ trước khi phóng to (như trong hình trước). Những hình ảnh vừa mờ và di dời:
Nó cũng có thể được nhận thấy rằng một phần của đường vẽ về phía cuối cùng là không bị ảnh hưởng và hiện tượng này xảy ra đối với các dòng kẻ trở về quá khứ. Tôi tin rằng lý do cho điều này là các thuộc tính kích thước hình ảnh đang bị mất khi tôi phóng to/thu nhỏ có thể gây mờ và thay đổi, nhưng tôi không chắc chắn về điều đó!
EDIT - Tôi đã tải lên a short video để hiển thị những gì đang diễn ra. Đó là loại giải trí ...
EDIT 2- Đây là a sample single-view app tập trung vào vấn đề.
Tôi nghĩ rằng điều này có thể có liên quan đến contentMode của chế độ xem bạn đang vẽ. Hãy thử UIViewContentModeRedraw? – kevboh
Tôi đã thử đặt nó cho 'myImageView' và' drawImage' (cả hai đều là 'UIImageView's) nhưng nó không hoạt động: (... – tipycalFlow
@kevboh Tôi đã tải lên video (và được thêm vào câu trả lời) có thể cung cấp cho bạn một ý tưởng tốt hơn về vấn đề này ... – tipycalFlow