`
lizaochengwen
  • 浏览: 647979 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

鼠标移动划线

 
阅读更多
PaintView.h

CGPoint lastPoint;
UIImageView *lineImageView;


PaintView.m

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self)
    {
        lineImageView = [[UIImageView alloc] initWithFrame:frame];
             lineImageView.backgroundColor = [UIColor grayColor];
        [self addSubview:lineImageView];
    }
   
    return self;
}

- (void)drawRect:(CGRect)rect
{   
    CGContextRef c = UIGraphicsGetCurrentContext();  // 获取当前的设备上下文,必须在drawRect中获取,否则会出错
   
    CGContextSetLineCap(context, kCGLineCapRound); // 设置划线样式
    CGContextSetLineWidth(context, 6);
    CGContextSetRGBStrokeColor(context, 0, 0, 0, 1);   // 设置画出的线的颜色信息
   
    CGContextBeginPath(context);
    CGContextMoveToPoint(context, 10, 10);
    CGContextAddLineToPoint(context, 100, 100);
   
    CGContextStrokePath(context);  // 绘出图形

    [super drawRect:rect];
}

// 移动鼠标划线
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *aTouch = [touches anyObject];
    lastPoint = [aTouch locationInView:self];
   
    CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
    CGContextSetAllowsAntialiasing(context, YES);
   
    CGContextMoveToPoint(context, 0, 15);
    CGContextAddEllipseInRect(context, CGRectMake(0, 0, 70, 70));
   
    CGContextDrawPath(context, 1);
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *aTouch = [touches anyObject];
   
    CGPoint currentPoint = [aTouch locationInView:self];
   
      UIGraphicsBeginImageContext(self.frame.size);   // 创建一个bitmap设备上下文  如果不创建,UIGraphicsGetCurrentContext()不能获取当前设备上下文
   

      [lineImageView.image drawInRect:CGRectMake(0, 0, 768, 1024)];  // 设置图形的显示区域

    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 7);
    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 1.0, 1.0, 1.0);

    CGContextBeginPath(UIGraphicsGetCurrentContext());

    CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
    CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
    CGContextStrokePath(UIGraphicsGetCurrentContext());

    [lineImageView setImage:UIGraphicsGetImageFromCurrentImageContext()];
    UIGraphicsEndImageContext();  // 关闭创建的设备上下文
   
    lastPoint = currentPoint;
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UIGraphicsBeginImageContext(self.frame.size);
    [lineImageView.image drawInRect:CGRectMake(0, 0, 768, 1024)];
    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 7);
    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 1.0, 1.0, 1.0);
    CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
    CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
    CGContextStrokePath(UIGraphicsGetCurrentContext());
    CGContextFlush(UIGraphicsGetCurrentContext());
    [lineImageView setImage:UIGraphicsGetImageFromCurrentImageContext()];
    UIGraphicsEndImageContext();

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics