绘制图画

来源:互联网 发布:淘宝真实流量购买 编辑:程序博客网 时间:2024/04/27 17:25
//如果在绘图的时候需要用到定时器,通常

// NSTimer很少用于绘图,因为调度优先级比较低,并不会准时调用
- (
void)awakeFromNib
{
   
// 创建定时器
//    [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(timeChange) userInfo:nil repeats:YES];
   
CADisplayLink *link = [CADisplayLinkdisplayLinkWithTarget:selfselector:@selector(timeChange)];
   
   
// 添加主运行循环
    [link
addToRunLoop:[NSRunLoopmainRunLoop]forMode:NSDefaultRunLoopMode];
}

// CADisplayLink:每次屏幕刷新的时候就会调用,屏幕一般一秒刷新60

// 12
staticint count =0;
- (
void)timeChange
{
   
   
// 注意:这个方法并不会马上调用drawRect,其实这个方法只是给当前控件添加刷新的标记,等下一次屏幕刷新的时候才会调用drawRect
    [
selfsetNeedsDisplay];
    
}


绘制头像圆角的时候尽量用这个方法,因为它能狗减少内存消耗.
 // NO代表透明
   
UIGraphicsBeginImageContextWithOptions(self.size,NO,0.0);
   
   
// 获得上下文
   
CGContextRef ctx = UIGraphicsGetCurrentContext();
   
   
// 添加一个圆
   
CGRect rect = CGRectMake(0,0,self.size.width,self.size.height);
   
CGContextAddEllipseInRect(ctx, rect);
   
   
// 裁剪
   
CGContextClip(ctx);
   
   
// 将图片画上去
    [
selfdrawInRect:rect];
   
   
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
   
   
UIGraphicsEndImageContext();
   
   return image;

46.绘制图片,如果图片过大无法全部显示,可以让其从顶部显示.

       // 开启图形上下文
        UIGraphicsBeginImageContextWithOptions(topic.pictureF.size,
YES,0.0);
       
       
// 将下载完的image对象绘制到图形上下文
        CGFloat width = topic.pictureF.size.width;
        CGFloat height = width * image.size.height / image.size.width;
        [image drawInRect:CGRectMake(
0,0, width, height)];
       
       
// 获得图片
       
self.imageView.image = UIGraphicsGetImageFromCurrentImageContext();
       
       
// 结束图形上下文
        UIGraphicsEndImageContext();
    }];

0 0
原创粉丝点击