MyUIView.h
#import <UIKit/UIKit.h>
@interface MyUIView : UIView {
NSSet *touches;
}
@property(nonatomic, retain) NSSet *touches;
@end
#import "MyUIView.h"
MyUIView.m
@implementation MyUIView
@synthesize touches;
#pragma mark -
#pragma mark DrawFuction
-(void)drawRect:(CGRect)rect{
CGContextRef context = UIGraphicsGetCurrentContext(); //그리기 작업을 위해 그래픽 컨텍스를 얻음
CGFloat gray[4] = {0.5f, 0.5f, 0.5f, 1.0f};
CGContextSetStrokeColor(context, gray);
for(UITouch *touch in self.touches)
{
CGPoint pt = [touch locationInView:self];
CGRect rc = CGRectMake(pt.x-20, pt.y-20, 40.0f, 40.0f);
CGContextAddEllipseInRect(context, rc); //실제 그림을 그리는 행위를 한다
}
CGContextStrokePath(context);
}
#pragma mark -
#pragma mark TouchEvent
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
self.touches = [event allTouches];
[self setNeedsDisplay];
}
-(BOOL)isMultipleTouchEnabled{
return YES;
}
-(void)dealloc{
[super dealloc];
[touches release];
touches = nil;
}
@end
- 아이폰에서는 drawRect: 에서만 그리기를 할 수 있다.
- 애플리케이션이 구현하는 그리기 작업은 그래픽 컨텍스트(context)를 얻는 것으로부터 시작된다.
- 시스템은 그래픽 컨텍스트를 스택으로 관리한다.
- CGPathAddLineToPoint 와 CGContextAddLineToPoint
- CGPathAddCurveToPoint 와 CGContextAddCurveToPoint
- CGPathAddEllipseInRect 와 CGContextAddEllipseInRect
- CGPathAddArc와 CGContextAddArc
- CGPathAddRect와 CGContextAddRect
- 비트맵 그래픽 컨텍스트와 PDF 그래픽 컨텍스트를 이용한다.
- CGBitmapContextCreate와 CGPDFContextCreate 함수로 생성한다.
- 이 함수로 그래픽컨텍스트를 생성한 후에 drawRect:가 아닌 다양한 위치에서 그리기를 수행할 수 있다.
출처 : http://gbsn.blog.me/130832879
'프로그래밍 > iOS' 카테고리의 다른 글
간단한 손가락으로 그리기 소스 (0) | 2012.01.12 |
---|---|
uiimageview위에 그림 그리기 (0) | 2012.01.12 |
UILabel 세로 정렬하기 ( Vertical align ) (0) | 2012.01.12 |
UIImageView 테두리넣기 및 모서리 깎기 (0) | 2012.01.11 |
UIImageView에 라운딩 처리 (0) | 2012.01.11 |