0

我想画图UIImageView,下面是我的画图代码。我的图像视图模式适合宽高比。当我使用以下代码进行绘制时,由于我正在使用drawinrect并给出矩形,UIImageView所以所有图像都被缩小到`imageview. 我想绘制图像大小的图像而不是图像视图。因为我正在检测图像视图上的触摸点,所以点击点和图像上的实际绘图是不同的。任何人都可以告诉我如何直接在图像上绘图。以及如何计算图像而不是图像视图上的触摸点的这种偏移或差异。

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 {

    UITouch *touch = [touches anyObject];
    lastTouch = [touch locationInView:self];

 }

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{

CGPoint   currentTouch = [[touches anyObject] locationInView:self];

UIGraphicsBeginImageContext(self.image.size);
CGContextRef context = UIGraphicsGetCurrentContext();

[self.image drawInRect:CGRectMake(0, 0, self.image.size.width, self.bounds.size.height)];

CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetLineWidth(context, _brushSize);

CGContextBeginPath(context) ;

CGContextMoveToPoint(context, lastTouch.x, lastTouch.y);
CGContextAddLineToPoint(context,currentTouch.x,currentTouch.y) ;

CGContextSetAlpha( context , 1 );

CGContextSetStrokeColorWithColor(context, [_brushColor CGColor]);

CGContextStrokePath(context) ;

self.image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

lastTouch = currentTouch;


 }
4

1 回答 1

1

你不应该真的是我们的班级UIImageView。它不打算被子类化。

更好的方法是使用 aUIView而不是UIImageView.

那么两种可能的方法是...

UIImage直接将其绘制到UIView内部 drawRect 中,但这会给您带来与当前遇到的相同的问题。

或者...

UIView有一个UIImageView. 调整它的大小,使其成为正确的大小/形状UIImage。(即自己进行缩放)然后在UIImageView第二个UIView(和子类)上第二个将被封顶 DrawingView 或其他东西。您现在可以在这里完成所有绘图。你所有的触摸检测也将在这里。因此您不再需要将触摸点转换为不同的绘图点。

于 2012-11-28T06:32:55.687 回答