2012-11-28 114 views
0

我想繪製UIImageView,以下是我的繪圖代碼。我的圖像視圖模式是方面適合的。當我使用以下代碼繪製時,由於我使用的是drawinrect並給出了UIImageView的矩形,所以所有圖像都縮小到imageview的大小。我想繪製圖像大小的圖像,而不是圖像視圖。由於我正在檢測圖像視圖上的觸摸點,因此點擊和實際繪製圖像的點是不同的。任何機構都可以告訴我如何直接繪製圖像。以及如何計算圖像上的觸摸點而不是圖像視圖的這種移位或差異。UIImageView直接繪製在圖像的大小,而不是圖像的視圖

-(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; 


} 

回答

1

你不應該真的是我們的分類UIImageView。它不打算分類。

更好的方法是使用UIView而不是UIImageView

然後兩種可能的方法是要麼...

直接繪製UIImage到內部的drawRect的UIView,但是這會給你,你目前有同樣的問題。

或者......

UIViewUIImageView。調整此大小,以便它是UIImage的正確尺寸/形狀。 (也就是說縮放自己)然後在UIImageView把第二個UIView(和子類本)這第二個將被封頂的DrawingView什麼的。你現在可以在這裏完成你所有的繪圖。所有的觸摸檢測也會在這裏。因此,您不再需要將觸摸點轉換爲不同的繪圖點。

+0

感謝您的編輯:D是寫在我的iPhone上,所以當時無法格式化。 – Fogmeister

相關問題