滚动心电图形的绘制(Core Graphics)

本文介绍了如何使用Core Graphics和Quartz2D在iOS中实现滚动心电图的效果。通过dispatch_source_t创建间隔性定时器,不断更新数据点,并在drawRect方法中根据数据点绘制图形,实现心电图的动态显示。
摘要由CSDN通过智能技术生成

第一:先看效果图形


第二:本绘图要了解的知识

1、 间隔性的定时器知识

    dispatch_source_t timer 是GCD 的一个创建一个间隔性的定时器的形式。具体写法:

    /* 定时器对象的创建 。其中:@<#dispatchQueue#> 改参数是设置Cup 处理的优先级( 可以是主线程)*/

    dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, <#dispatchQueue#>);

   /* 这是定时器的设置*/

    dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, <#intervalInSeconds#> * NSEC_PER_SEC, <#leewayInSeconds#> * NSEC_PER_SEC);

    /* 每次间隔都要会回调的方法*/

    dispatch_source_set_event_handler(timer, ^{

        <#code to be executed when timer fires#>

    });

   /* 定时器的开始*/

    dispatch_resume(timer);

  定时器的清楚:

    /* 清楚时间*/

    dispatch_source_cancel(self.timer);


2、数组容器存放点的形式
      一个数组容器要存放点是不可以直接存放的,我们都知道数组容器能存放的是对象,而点不是对象,我们就要在存放的时候加以转化。例如:

    double NextPointValue = sin(CFAbsoluteTimeGetCurrent()) + ((double)rand()/(double)RAND_MAX);

    /* 转换对象,使其存入容器*/

    NSNumber * NextPointObject = [NSNumber numberWithDouble:NextPointValue];

   要注意:当对象从点数组中取出来,使用的时候,我们不要忘记还原。

3、路径平移的函数

     static inline CGAffineTransform

     CGAffineTransformMakeScaleTranslate(CGFloat sx ,CGFloat sy,CGFloat dx ,CGFloat dy){

          return CGAffineTransformMake(sx, 0.f, 0.f, sy, dx, dy);

     }


4、绘制路径

    CGMutablePathRef Paths = CGPathCreateMutable(); 路径的创建,同时要注意无论是在ARC 自动管理内存的情况      下,也要注意路径的释放:

    /* 释放路径*/

    CGPathRelease(Paths);



第三、关键代码

//

//  ElectrocardiogramView.m

//  滚动图形(心电图)

//

//  Created by MAC on 16/10/10.

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值