画图-之涂鸦

先上代码吧:

-(NSMutableArray *)totalPathPoints{
    if (_totalPathPoints == nil) {
        _totalPathPoints = [NSMutableArray array];
    }return _totalPathPoints;
}
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    for (NSMutableArray *pathPoints in  self.totalPathPoints) {
        for (int i = 0 ;  i < pathPoints.count; i ++) {
            CGPoint pos =  [pathPoints [i]CGPointValue];
            if (i == 0) {
                CGContextMoveToPoint(ctx, pos.x, pos.y);
            }else{
                CGContextAddLineToPoint(ctx, pos.x, pos.y);
            }
        }
    }
    CGContextSetLineCap(ctx, kCGLineCapRound);
    CGContextSetLineJoin(ctx, kCGLineJoinRound);
    CGContextSetLineWidth(ctx, 5);
    CGContextStrokePath(ctx);

}

/**
*  起点
*
*/
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch =  [touches anyObject];
    CGPoint startPos =  [touch locationInView:touch.view] ;
        // 每一次开始触摸, 就新建一个数组来存放这次触摸过程的所有点(这次触摸过程的路径)

    NSMutableArray *pathPoints = [NSMutableArray array];
    [pathPoints addObject:[NSValue valueWithCGPoint:startPos]];
        // 添加这次路径的所有点到大数组中

    [self.totalPathPoints addObject:pathPoints];
    [self setNeedsDisplay];

}
/**
 *  连线
 *
 */
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [touches anyObject];
    CGPoint pos = [touch locationInView:touch.view];

    // 取出这次路径对应的数组
    NSMutableArray *pathPoints = [self.totalPathPoints lastObject];
    [pathPoints addObject:[NSValue valueWithCGPoint:pos]];

    [self setNeedsDisplay];

}
/**
 *  连线
 *
 */
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    [self touchesMoved:touches withEvent:event];
}
图片如下:

希望可以帮助到你,有问题请关注我哦,我们一起coding.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 04:54:09

画图-之涂鸦的相关文章

HTML5实现涂鸦板

最近闲的,看了看html5,强大的绘图功能让我惊奇,于是,写了个小玩意---涂鸦板,能实现功能有:画画,改色,调整画笔大小 html5的绘图可以分为点,线,面,圆,图片等,点和线,这可是所有平面效果的基点,有了这两个东西,没有画不出来的东西,只有想不到的算法. 先上代码了: html 1 <body style="cursor:pointer"> 2 <canvas id="mycavas" width="1024" heigh

自定义view实现涂鸦(画板)功能

自定义view实现涂鸦功能,包括撤销.恢复.重做.保存以及橡皮擦(在风格中实现)功能,小模块包括画笔颜色调整.画笔尺寸调整.画笔类型(包括正常画笔以及橡皮擦功能),之后又陆续实现了画圆.画矩形以及画箭头的功能,这里我们先完成前面的需求 撤销: /** * 撤销 * 撤销的核心思想就是将画布清空, * 将保存下来的Path路径最后一个移除掉, * 重新将路径画在画布上面. */ public void undo() { if (savePath != null && savePath.siz

【Android】自己定义View、画家(画布)Canvas与画笔Paint的应用——绘图、涂鸦板app的实现

利用一个简单的绘图app来说明安卓的图形处理类与自己定义View的应用. 例如以下图,有一个供用户自己随意绘图.涂鸦的app. 这里不做那么花俏了,仅提供黑白两色.但能够改变笔尖的粗细. 实质上这里的橡皮擦就是白色的画笔,根本不用使用到画笔的setXfermode方法,要搞一堆复杂的project. 用户画完图之后能够保存图像.图像的文件名称是当前的时间.保存的位置是sdcard的根文件夹. 制作步骤例如以下: 1.先设置好字体文件res\values\strings.xml,主要是app的名称

Android关于创建涂鸦板过程中出现的小问题

我前一段时间在制作涂鸦板的过程中在处理橡皮擦功能上碰上了一些小问题,网上部分资源提到的实现方法和我下面说到的橡皮擦基本方法实现思路大仿类似,以下是基本思路: 橡皮擦就是用和画布颜色一致颜色的画笔在屏幕触摸,实现橡皮擦的功能. 1)初始化画笔,并且设置画笔的颜色为白色(这里其实要设置为画布的颜色). 2)设置画笔的大小为合适的大小. 3)用一个变量记住橡皮擦的颜色,用于在其他操作后重新使用橡皮擦. 以上为简易的橡皮擦主要是使用和画布相同的的颜色来覆盖,但当背景图为一张照片(背景图)时是不可行的,因

mooc上学习acllib后写的包含背景音乐的小涂鸦板(初入江湖,大佬勿喷)

#include "acllib.h"ACL_Sound sound1;//背景音乐ACL_Image img;//开始图ACL_Image img1;//涂鸦图ACL_Color c=RED;//默认画笔颜色int cx=0;int cy=0;int j=0;//开始界面和绘图界面分离int m=0;//重置当前绘图点and监控鼠标左或右键是否一直按着void BEGIN(void){ loadImage("begin_one.jpg",&img); lo

[转]html5 Canvas画图教程(1)—画图的基本常识

今天看到一个讲Canvas的教程,很通俗移动,所以转载了下. 虽然大家都称Canvas为html5的新标签,看起来好像Canvas属于html语言的新知识,但其实Canvas画图是通过javascript来做的.所以,如果你想学习Canvas画图,你必须要有Javascript基础. 另外,画图嘛,总有一些图像方面的术语和知识点,所以如果你有过做图或美工经验,学习Canvas会更容易. Canvas,意为画布也.而Html5中的Canvas也真的跟现实生活中的画布非常相似.所以,把他看成一块实实

html5 canvas 涂鸦画板

html5 canvas 的涂鸦画板,可以加载图片进行涂鸦,也可以下载服务器使用的php上传的图片不能超过1M,只能是jpg或者png 格式的演示地址的服务器网速不怎么样,读取文件可能很慢,到达100%的时候点击读取文件,如果没显示就多点几次?1. [代码]主页面 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd&quo

PPAPI+Skia实现的涂鸦板

在PPAPI插件中使用Skia画图介绍了怎样在PPAPI中使用Skia,文末说回头要提供一个简单的涂鸦板插件,这次我来兑现承诺了. foruok原创,关注微信订阅号"程序视界"可联系foruok. 演示样例非常easy,先看看效果: 涂鸦插件功能说明 功能列表: 使用鼠标左键绘制线条 撤销.清除功能 支持CTRL+Z组合键撤销,支持ESC清除 项目说明 项目与在PPAPI插件中使用Skia画图这个文章里的几乎相同,仅仅只是多了几个文件.VS2013中的项目视图例如以下: 做一点点说明吧

画图软件中调整图像的大小

在打开Windows附件的画图软件时,有时候截屏.或者其它图形粘贴的大小不合式.需要调整图像的大小. 画图软件有两个界面可调整:内界面是蓝色背景中的白色矩形,外界面是画图软件的边框.内界面固定在边框内,但是长.宽可以通过鼠标拉伸. 拉伸时,鼠标为从右下至左上的斜线型.调整内界面才能调整图像的大小. 如果内界面和外界面边界基本重合,则需要将进度条向右下角汇聚,直至出现内边界的右下"角".从这个角出发,将内边界从下往上.从右往左 拉动,可以发现内边界能移动.通常,在内边界和外边界之间都保存