Tôi đang phát triển tính năng vẽ trong ios, tôi có 3 loại đườngdòng chấm trong bản vẽ không hoạt động khi tôi vẽ đường chậm
- MÁY BAY
- tiêu tan
- chấm
Các vấn đề là với đường DOTTED, khi tôi vẽ nhanh nó vẽ tốt, nhưng khi tôi vẽ từ từ nó vẽ đường liền nét
Dưới đây là đoạn mã, hãy hướng dẫn tôi vấn đề ở đâu.
- (void)drawingLayerMoved:(UIPanGestureRecognizer *)recognizer {
//MOVE START
if (recognizer.state == UIGestureRecognizerStateBegan) {
dw_mouseSwiped = NO;
dw_lastPoint = [recognizer locationInView:self.tempDrawImage];
UIGraphicsBeginImageContext(self.tempDrawImage.frame.size);
[self.tempDrawImage.image drawInRect:CGRectMake(0, 0, self.tempDrawImage.frame.size.width, self.tempDrawImage.frame.size.height)];
}
//MOVING
else if (recognizer.state == UIGestureRecognizerStateChanged) {
dw_mouseSwiped = YES;
CGPoint currentPoint = [recognizer locationInView:self.tempDrawImage];
CGContextRef dw_context = UIGraphicsGetCurrentContext();
if([dw_brushType isEqual: DRAWING_DOTTED_LINE]) {
CGContextSetLineCap(dw_context, kCGLineCapRound);
}
else if([dw_brushType isEqual: DRAWING_DASHED_LINE]) {
CGContextSetLineCap(dw_context, kCGLineCapSquare);
}
else if([dw_brushType isEqual: DRAWING_PLANE_LINE] ) {
CGContextSetLineCap(dw_context, kCGLineCapRound);
}
// ADD FEW SPACES B/W DOTS OF LINE
if([dw_brushType isEqual: DRAWING_DASHED_LINE] || [dw_brushType isEqual: DRAWING_DOTTED_LINE]) {
CGFloat dw_dash[] = {2,dw_brush*3,dw_brush*2,dw_brush};
CGContextSetLineDash(dw_context, 1, dw_dash, 4);
}
//BRUSH WIDTH (we have devided it on 3)
CGContextSetLineWidth(dw_context, (dw_brush/3));
if([dw_drawingLayerMode isEqualToString:DRAWING_LAYER_MODE_ERASER]){
//BRUSH CLEAR COLOR
CGContextSetFillColorWithColor(dw_context, [UIColor clearColor].CGColor);
//CLEAR DRAWING
CGContextSetBlendMode(dw_context, kCGBlendModeClear);
} else{
// BRUSH RGB COLOR
CGContextSetRGBStrokeColor(dw_context, dw_red, dw_green, dw_blue, dw_opacity);
//NORMAL DRAWING
CGContextSetBlendMode(dw_context,kCGBlendModeNormal);
}
CGContextMoveToPoint(dw_context, dw_lastPoint.x, dw_lastPoint.y);
CGContextAddLineToPoint(dw_context, currentPoint.x, currentPoint.y);
CGContextStrokePath(dw_context);
//SAVE CURRENT MOVE INFO IN TEMP IMG
self.tempDrawImage.image = UIGraphicsGetImageFromCurrentImageContext();
//SAVE CURRENT MOVE POINT AS dw_lastPoint
dw_lastPoint = currentPoint;
}
//MOVE END
else if (recognizer.state == UIGestureRecognizerStateEnded) {
UIGraphicsEndImageContext();
}
}
Vấn đề của tôi là simmiler như câu hỏi này, nhưng không tìm thấy giải pháp trong đó: Drawing a dashed line with CGContextSetLineDash
Cách tiếp cận vẽ đường dẫn đến hình ảnh cho mỗi thay đổi sẽ không hoạt động nếu bạn muốn gạch ngang đường. Bạn sẽ phải tiếp tục thêm vào cùng một đường dẫn có thể thay đổi và vẽ lại nó. –
@ DavidRönnqvist nó sẽ là tuyệt vời nếu bạn có thể giúp tôi bằng văn bản mã, tôi đã tìm kiếm rất nhiều nhưng không tìm thấy bất kỳ giải pháp –