我無法弄清楚如何將我的繪製路徑保存到UIImage?
我知道我必須使用UIGraphicsBeginImageContext和類似[drawImage drawInRect:CGRectMake(0,0,drawImage.size.width,drawImage.size.height)];
但我不知道把它放在我的觸摸功能中。如何將UIBezierPath保存到現有的UIImageView?
我需要保存圖像的每條路徑,因爲我希望能夠在每條繪製的線後更改顏色和alpha值。
使用此代碼,當我更改值時,所有行將在同一時間調整顏色和寬度。
- (id) initWithFrame:(CGRect)frame andImage: (UIImageView*) image
{
...
paths = [[NSMutableArray alloc]init];
drawImage = image;
self.backgroundColor=[UIColor clearColor];
[self addSubview:drawImage];
}
- (void)drawRect:(CGRect)rect
{
[brushPattern setStroke];
[myPath strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];
// Drawing code
//[myPath stroke];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *mytouch=[[touches allObjects] objectAtIndex:0];
myPath=[[UIBezierPath alloc]init];
[myPath moveToPoint:[mytouch locationInView:self]];
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *mytouch=[[touches allObjects] objectAtIndex:0];
[myPath addLineToPoint:[mytouch locationInView:self]];
[self setNeedsDisplay];
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[paths addObject:myPath];
[myPath release];
}
如何更新圖像視圖的圖像?我不明白我如何在我的圖像視圖中放置路徑。因爲我只設置了一個指向該路徑的點,但從不將該路徑鏈接到該圖像視圖。 – madmax 2011-06-07 22:47:46
已經創建了一個['sample project'](http://dl.dropbox.com/u/22783696/Beziers.zip),它會給你一個基本的想法。我將路徑推入數組並在最後使用相同的筆觸顏色來繪製它們。就像上面提到的那樣,你將不得不創建一個複合對象來存儲關於路徑和路徑本身的顏色信息,並將該對象推入數組中。 – 2011-06-08 00:23:53
謝謝!現在我懂了。 ;-)但是當我將它傳遞給這個畫圖控制器時,我的圖像視圖包含了一些圖紙。所以現在它會被覆蓋。我如何將這些內容添加到圖像上下文中,所以路徑位於此圖像之上? – madmax 2011-06-08 10:04:47