暗黑破坏神3召唤流涂鸦之翼召唤一个涂鸦有什么用

涂鸦宝宝-少儿-腾讯视频
三倍流畅播放
1080P蓝光画质
新剧提前看
1080P蓝光画质
纯净式无框播放器
三倍流畅播放
这是一个引导孩子学习用蜡笔涂鸦和进行联想编故事的动画。主人公小怪物用最简单的笔划组合成各种漂亮的图画,并且让它们动起来组成有趣的故事,期间还插进生话中孩子与主题相关的真实活动,通过图画和真实情景以丰富主题,让孩子们在互动的过程中学习到一些知识。例如:画了个雪人,太阳出来雪人热得受不了,怎样给雪人降降温;画条毛毛虫去了解蝴蝶是怎样变成的;画绵羊就联想到羊毛;画只蜘蛛当守门员又会有怎样的结果;小骑士要到城堡救公主还需要画些什么;画小猪当然就离不开大灰狼和盖房子了……。
1 && !expandMoreActors}" _stat="info:actor_more">
<a href="javascript:void(0);" class="btn_next"
title="下一页"
r-on="{click: onNext}"
r-show="{current &#xE621;
<a href="javascript:void(0);" class="btn_next _snext"
title="下一页"
r-show="{curPage &#xE621;
{playSrcName}
《{title}》{playSrcName}网付费片源1051人阅读
iOS 开发(243)
ios绘图demo,做一个涂鸦板(下)
之前一篇ios绘图demo,做一个涂鸦板(上) 完成了一个基本功能的绘图板,这一篇,最要是增加一个画贝塞尔曲线的功能。
1完成一个最基本的涂鸦板2给涂鸦板加上颜色选择功能,和笔触粗细功能
3画贝塞尔曲线
| ios绘图demo,做一个涂鸦板(下) | 完成后的效果图:
代码下载:github库,
步骤和原理
1:添加一个贝塞尔曲线功能按钮,点击之后,画图模式为画贝塞尔曲线。2:重写touchesBegan、touchesMoved、touchesEnded, 第一次点击获得起始点的坐标,第二次点击获取结束点的坐标并移动手指,根据手指的移动,设置贝塞尔曲线的控制点位置。 随着手指移动,绘制出当前曲线的和控制点的参考线。松手后将绘制的线存入数组
添加控制面板
-(void)createControlBoard{
paintViewMode = PaintViewModeStroke;
UIView *controlBoard = [[UIView alloc]initWithFrame:CGRectMake(0, 60, 60, height-50)];
[self addSubview:controlBoard];
NSMutableArray *boards = [[NSMutableArray alloc]init];
//bezier曲线面板
UIButton *berzierBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[berzierBtn setBackgroundImage:[UIImage imageNamed:@&bezierBoard& ] forState:UIControlStateNormal];
[berzierBtn addTarget:self action:@selector(berzierBtnClick:) forControlEvents:UIControlEventTouchUpInside];
[boards addObject:berzierBtn];
//添加面板包含的每一个按钮
int vercital = 20;
int horizontal = 10;
int btnWH = 60;
for (int i = 0 ; i& boards.count ; i&#43;&#43;) {
UIButton *btn = boards[i];
btn.frame = CGRectMake(horizontal,(i&#43;1)* vercital ,btnWH, btnWH);
[controlBoard addSubview:btn];
#pragma mark -控制面板按钮点击
//贝塞尔按钮的点击事件
-(void)berzierBtnClick:(id)sender{
UIButton *btn = sender;
if(paintViewMode == PaintViewModeStroke){
paintViewMode = PaintViewModeBezier;
[btn setBackgroundImage:[UIImage imageNamed:@&bezierBoard_l&] forState:UIControlStateNormal];
paintViewMode = PaintViewModeStroke;
[btn setBackgroundImage:[UIImage imageNamed:@&bezierBoard&] forState:UIControlStateNormal];
定义当前画图模式的枚举,和贝塞尔曲线的数组,定义了一个bezierStep类封装bezier曲线的数据
typedef enum {
PaintViewModeStroke,
PaintViewModeBezier
} PaintViewMode
//画的线路径的集合,内部是NSMutableArray类型
NSMutableArray *bezierSteps;
BezierStep.h
Created by ZTELiuyw on 15/7/27.
Copyright (c) 2015年 刘彦玮. All rights reserved.
#import &Foundation/Foundation.h&
#import &UIKit/UIKit.h&
typedef enum {
BezierStepStatusSetStart,
BezierStepStatusSetEnd,
BezierStepStatusSetControl
}BezierStepStatus;
@interface BezierStep : NSObject{
CGPoint startPoint;
CGPoint controlPoint;
CGPoint endPoint;
CGColorRef color;
//笔画粗细
float strokeWidth;
//步骤状态
BezierStepStatus status;
#### 重写touchesBegan、touchesMoved、touchesEnded, 把不同模式的绘图区分出来
````objective-c
#pragma mark -手指移动
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
switch (paintViewMode) {
//笔画模式
case PaintViewModeStroke:
[self strokeModeTouchesBegan:touches withEvent:event];
//曲线模式
case PaintViewModeBezier:
[self bezierModeTouchesBegan:touches withEvent:event];
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
switch (paintViewMode) {
//笔画模式
case PaintViewModeStroke:
[self strokeModeTouchesMoved:touches withEvent:event];
//曲线模式
case PaintViewModeBezier:
[self bezierModeTouchesMoved:touches withEvent:event];
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
switch (paintViewMode) {
//笔画模式
case PaintViewModeStroke:
[self strokeModeTouchesEnded:touches withEvent:event];
//曲线模式
case PaintViewModeBezier:
[self bezierModeTouchesEnded:touches withEvent:event];
笔画模式的代码后之前一样,只是做了拆分,这里就不写了,把贝塞尔曲线模式的代码贴出来
-(void)bezierModeTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
//创建贝塞尔 步骤
BezierStep *step = [bezierSteps lastObject];
CGPoint point =[[touches anyObject]locationInView:self];
if (step) {
switch (step-&status) {
case BezierStepStatusSetStart:
step-&endPoint = point;
step-&status = BezierStepStatusSetControl;
case BezierStepStatusSetEnd:
[[BezierStep alloc]init];
step-&color = currColor.CGColor;
step-&strokeWidth = slider.value;
[bezierSteps addObject:step];
[[BezierStep alloc]init];
step-&color = currColor.CGColor;
step-&strokeWidth = slider.value;
[bezierSteps addObject:step];
-(void)bezierModeTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
BezierStep *step = [bezierSteps lastObject];
CGPoint point =[[touches anyObject]locationInView:self];
switch (step-&status) {
case BezierStepStatusSetControl:
step-&controlPoint = point;
[self setNeedsDisplay];
-(void)bezierModeTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
BezierStep *step = [bezierSteps lastObject];
CGPoint point =[[touches anyObject]locationInView:self];
switch (step-&status) {
case BezierStepStatusSetStart:
step-&startPoint = point;
step-&status = BezierStepStatusSetC
case BezierStepStatusSetControl:
step-&controlPoint = point;
step-&status = BezierStepStatusSetEnd;
最后,根据状态画出曲线了参考线
-(void)drawRect:(CGRect)rect{
//必须调用父类drawRect方法,否则 UIGraphicsGetCurrentContext()获取不到context
[super drawRect:rect];
CGContextRef ctx = UIGraphicsGetCurrentContext();
//渲染所有路径
for (int i=0; i&paintSteps.count; i&#43;&#43;) {
PaintStep *step = paintSteps[i];
NSMutableArray *pathPoints = step-&pathPoints;
CGMutablePathRef path = CGPathCreateMutable();
for (int j=0; j&pathPoints.count; j&#43;&#43;) {
CGPoint point = [[pathPoints objectAtIndex:j]CGPointValue] ;
if (j==0) {
CGPathMoveToPoint(path, &CGAffineTransformIdentity, point.x,point.y);
CGPathAddLineToPoint(path, &CGAffineTransformIdentity, point.x, point.y);
//设置path 样式
CGContextSetStrokeColorWithColor(ctx, step-&color);
CGContextSetLineWidth(ctx, step-&strokeWidth);
//路径添加到ct
CGContextAddPath(ctx, path);
CGContextStrokePath(ctx);
//渲染bezier路径
for (int i=0; i&bezierSteps.count; i&#43;&#43;) {
BezierStep *step = bezierSteps[i];
//设置path 样式
CGContextSetStrokeColorWithColor(ctx, step-&color);
CGContextSetLineWidth(ctx, step-&strokeWidth);
//路径参考线
CGContextMoveToPoint(ctx, step-&startPoint.x, step-&startPoint.y);
CGContextAddQuadCurveToPoint(ctx, step-&controlPoint.x, step-&controlPoint.y, step-&endPoint.x, step-&endPoint.y);
CGContextStrokePath(ctx);
switch (step-&status) {
case BezierStepStatusSetControl:
//画出起点到控制线的距离
//设置path 样式
CGContextSetStrokeColorWithColor(ctx, [UIColor colorWithRed:0.233 green:0.480 blue:0.858 alpha:1.000].CGColor);
//虚线线条样式
CGFloat lengths[] = {10,10};
CGContextSetLineDash(ctx, 1, lengths, 2);
CGContextMoveToPoint(ctx, step-&startPoint.x, step-&startPoint.y);
CGContextAddLineToPoint(ctx, step-&controlPoint.x, step-&controlPoint.y);
CGContextAddLineToPoint(ctx, step-&endPoint.x, step-&endPoint.y);
CGContextStrokePath(ctx);
代码下载:github库,
完成后的文件见 PaintViewV03.m
| ios绘图demo,做一个涂鸦板(下) | 完成后的效果图:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:130306次
积分:2549
积分:2549
排名:第15121名
原创:104篇
转载:154篇
评论:15条
(8)(1)(3)(6)(5)(4)(26)(42)(31)(66)(46)(14)(3)(2)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'这个武汉吖,用涂鸦创造了一个彩虹世界
武汉乐生活小老虎
武汉乐生活《玩&#183;味》社第9期《这个武汉吖,用涂鸦创造了一个彩虹世界》今天我想跟大家说说一个朋友的故事,他叫gan,就是“干”的拼音,用他的话说,Just gan it.Gan是做涂鸦的,可不是随便在墙上乱写乱画整个“fxxk”这样的,他做的东西用他自己的话说就是“走心不走肾,”如果不做涂鸦,学了这么多年设计,搞毛啊。为了满足“涂鸦私欲”,他在黎黄陂路开了家叫27KM的涂鸦馆,经营涂鸦喷漆和其它一些很“街头”的东西,有时候我会去坐坐,听他讲又到哪里画了副新作品,又到哪参加了什么涂鸦活动。尤其喜欢听他说Meeting of styles,因为通过gan的努力,这个全世界规模最大的专业涂鸦艺术盛典已经被他们带到了中国,并且在深圳,长沙,武汉等地举办了4次,虽然我是个门外汉,但每当听他说起这些,都会感觉很厉害的样子,而且他的眼神就像一个艺术家,带着整个世界的色彩。Gan偶尔会接一些商业活动,像可口可乐大中华区办公室,东方卫视《今晚80后脱口秀》都留下了他的绘迹,我想你现在和我当初知道这个事的时候应该一样“我丢!超&#23628;的啦!”第一次去gan的店,一进门,我去!整面墙这是毛线吗?原谅我当初的孤陋寡闻,在我的世界观里,这样子的墙,不是卖毛线,就是卖易拉罐的吧。之所以店名叫27KM,gan说他去掉027区号的前面的0,KM则代表他所想要拉近街头文化的距离,总体来说,27KM承载着gan的梦想,一种使涂鸦文化更加本土,更加贴近的梦想。现在店里主要经营涂鸦喷漆,自主服装品牌和死飞自行车,每天gan都会在店里写写画画,他说这是他最大的满足,在我眼里,”gan”这三个字母不光是名词,动词,形容词,更多的代表了更多像他一样的年轻人,向往自由,随性,仿佛浑身散发着一股子革命的芬芳。店名:27KM环境:街头,随意,原宿交通:江岸区黎黄陂路3号时间:11:00~22:00
正文已结束,您可以按alt+4进行评论
相关搜索:
看过本文的人还看了
[责任编辑:wykarenyan]
热门搜索:
热门排行焦点今日热评
Copyright & 1998 - 2017 Tencent. All Rights Reserved中国涂鸦当前发展状况如何?涂鸦手是否能养活自己? - 知乎71被浏览8003分享邀请回答53 条评论分享收藏感谢收起366 条评论分享收藏感谢收起查看更多回答

我要回帖

更多关于 暗黑破坏神3召唤流 的文章

 

随机推荐