KineticJS教程(4)
KineticJS教程(4)
4.图形样式
4.1.填充
Kinetic中图形的填充属性可以在构造方法中的config参数中的fill属性进行设定,也可以用图形对象的setFill方法进行设定。不过要注意,setFill使用的填充类型必须与创建这个对象时的config中所用的填充类型相同。
Kinetic支持颜色、图像、线性渐变和径向渐变四种填充模式。
4.1.1.颜色填充
<!DOCTYPE html>
<html>
<head>
<meta charset=“UTF-8″>
<title>KineticJS</title>
<script src=“../kinetic.js”></script>
</head>
<body>
<script>
window.onload = function() {
var stage = new Kinetic.Stage({
container : “container”,
width : 600,
height : 400
});
var layer = new Kinetic.Layer();
//创建第一个矩形对象的config参数
var config1 = {
x : 100,
y : 150,
width : 100,
height : 100,
//填充色
fill : “blue”
};
//创建第一个矩形对象
var rect1 = new Kinetic.Rect(config1);
//创建第二个矩形对象的config参数
var config2 = {
x : 400,
y : 150,
width : 100,
height : 100,
//填充色
fill : “red”
};
//创建第二个矩形对象
var rect2 = new Kinetic.Rect(config2);
//修改第二个矩形对象的颜色
rect2.setFill(“green”);
layer.add(rect1);
layer.add(rect2);
stage.add(layer);
};
</script>
<div id=“container”></div>
</body>
</html>
4.1.2.线性渐变填充
线性渐变填充的fill参数值如下:
{ start: { x: 100, y: 50 }, end: { x: 500, y: 50 }, colorStops: [0, "red", 0.5, "green", 1, "blue"] }
的形式,start是线性渐变线的起点位置,end是线性渐变线的终点位置,colorStops是指定线性渐变线上关键点的颜色值,位置参数是一个介于0到1之间的浮点数,0表示起点的颜色,1表示终点的颜色。
这里要注意的是,渐变线的坐标基点并不是以canvas左上角为(0, 0)点,如果是图形对象是矩形的话,矩形的左上角点才是(0, 0)点,如果是圆形对象的话,圆心才是(0, 0)点。
<!DOCTYPE html>
<html>
<head>
<meta charset=“UTF-8″>
<title>KineticJS</title>
<script src=“../kinetic.js”></script>
</head>
<body>
<script>
window.onload = function() {
var stage = new Kinetic.Stage({
container : “container”,
width : 600,
height : 400
});
var layer = new Kinetic.Layer();
//创建第一个矩形对象的config参数
var config1 = {
x : 100,
y : 50,
width : 400,
height : 100,
//渐变色
fill : {
start : {
x : 0,
y : 50
},
end : {
x : 400,
y : 50
},
colorStops : [ 0, "red", 0.5, "green", 1, "blue" ]
}
};
//创建第一个矩形对象
var rect1 = new Kinetic.Rect(config1);
//创建第二个矩形对象的config参数
var config2 = {
x : 100,
y : 200,
width : 400,
height : 100,
//渐变色
fill : {
start : {
x : 0,
y : 50
},
end : {
x : 400,
y : 50
},
colorStops : [ 0, "red", 0.5, "green", 1, "blue" ]
}
};
//创建第二个矩形对象
var rect2 = new Kinetic.Rect(config2);
//修改第二个矩形对象的颜色变化模式
rect2.setFill({
start : {
x : 100,
y : 50
},
end : {
x : 400,
y : 50
},
colorStops : [ 0, "yellow", 0.5, "cyan", 1, "purple" ]
});
layer.add(rect1);
layer.add(rect2);
stage.add(layer);
};
</script>
<div id=“container”></div>
</body>
</html>
上述代码的渐变效果图如下:

上面的矩形渐变线为(0, 50)到(400, 50),正如上面提到的,这里的渐变线是以这个矩形的左上角为(0, 0)点的,所以实际的渐变线是如黑线条所示的区域,而下面的矩形由于setFill的修改,渐变线为(100, 50)到(400, 50),所以实际渐变线是图上所示的黑线区域,而不是整个矩形的范围。不要把渐变线的坐标理解为相对于canvas的左上角。
4.1.3.径向渐变填充
径向渐变填充的fill参数值如下:
{ start: { x: 100, y: 50, radius: 100 }, end: { x: 500, y: 50, radius: 100 }, colorStops: [0, "red", 0.5, "green", 1, "blue"] }
的形式,start是径向渐变的起始圆位置,end是径向渐变的终止圆位置,colorStops是指定径向渐变圆间的关键距离的颜色值,位置参数是一个介于0到1之间的浮点数,0表示起始圆的颜色,1表示终止圆的颜色。
这里要注意的是,与线性渐变类似,渐变圆的圆心坐标基点并不是以canvas左上角为(0, 0)点,如果是图形对象是矩形的话,矩形的左上角点才是(0, 0)点,如果是圆形对象的话,圆心才是(0, 0)点。
<!DOCTYPE html>
<html>
<head>
<meta charset=“UTF-8″>
<title>KineticJS</title>
<script src=“../kinetic.js”></script>
</head>
<body>
<script>
window.onload = function() {
var stage = new Kinetic.Stage({
container : “container”,
width : 600,
height : 400
});
var layer = new Kinetic.Layer();
//创建第一个圆形对象的config参数
var config1 = {
x : 150,
y : 200,
radius : 100,
//渐变色
fill : {
start : {
x : 0,
y : 0,
radius : 0
},
end : {
x : 0,
y : 0,
radius : 100
},
colorStops : [ 0, "red", 0.5, "green", 1, "blue" ]
}
};
//创建第一个圆形对象
var circle1 = new Kinetic.Circle(config1);
//创建第二个圆形对象的config参数
var config2 = {
x : 450,
y : 200,
radius : 100,
//渐变色
fill : {
start : {
x : 0,
y : 0,
radius : 0
},
end : {
x : 0,
y : 0,
radius : 100
},
colorStops : [ 0, "red", 0.5, "green", 1, "blue" ]
}
};
//创建第二个圆形对象
var circle2 = new Kinetic.Circle(config2);
//修改第二个矩形对象的颜色变化模式
circle2.setFill({
start : {
x : 0,
y : 0,
radius : 0
},
end : {
x : 0,
y : 0,
radius : 100
},
colorStops : [ 0, "yellow", 0.5, "cyan", 1, "purple" ]
});
layer.add(circle1);
layer.add(circle2);
stage.add(layer);
};
</script>
<div id=“container”></div>
</body>
</html>
上述代码的效果如下图:

4.1.4.图像填充
图像填充的fill参数值如下:
{ image : imageObj, offset : { x : 0, y : 0 }
imageObj是javascript的Image对象,offset是图像开始填充的位置偏移量。
<!DOCTYPE html>
<html>
<head>
<meta charset=“UTF-8″>
<title>KineticJS</title>
<script src=“../kinetic.js”></script>
</head>
<body>
<script>
function draw(image) {
var stage = new Kinetic.Stage({
container : “container”,
width : 600,
height : 400
});
var layer = new Kinetic.Layer();
//创建第一个矩形config参数
var config1 = {
x : 50,
y : 100,
width : 180,
height : 180,
//填充图像
fill : {
image : image,
offset : {
x : 0,
y : 0
}
}
};
var rect1 = new Kinetic.Rect(config1);
//创建第二个矩形config参数
var config2 = {
x : 350,
y : 100,
width : 180,
height : 180,
//填充图像,并将填充图像向右下移动50个像素
fill : {
image : image,
offset : {
x : 0,
y : 0
}
}
};
var rect2 = new Kinetic.Rect(config2);
//将填充图像向左上移动50个像素
rect2.setFill({
//image : image,
offset : {
x : -50,
}
});
layer.add(rect1);
layer.add(rect2);
stage.add(layer);
}
window.onload = function() {
var image = new Image();
image.onload = function() {
draw(image);
};
image.src = “./FSM.jpg”;
};
</script>
<div id=“container”></div>
</body>
</html>
上述代码的效果如下图:

4.2.线条颜色与宽度
线条对象与其他图形的边缘线的颜色与宽度设置如下:
<script>
// 使用构造方法的config参数设置
var shape = new Kinetic.Circle({
stroke: “black”,
strokeWidth: 4
});
// 用图形对象的方法设置
shape.setStroke(“blue”);
shape.setStrokeWidth(20);
</script>
4.3.透明
透明度是一个0到1之间的浮点值,0表示完全透明,1则是完全不透明。
<script>
// 使用构造方法的config参数设置
var shape = new Kinetic.Circle({
alpha: 0.5
});
// 用图形对象的方法设置
shape.setAlpha(1);
</script>
4.4.阴影
<script>
// 使用构造方法的config参数设置
var shape = new Kinetic.Circle({
shadow: {
color: “black”,
blur: 10,
offset: [10, 10],
alpha: 0.5
}
});
// 用图形对象的方法设置
shape.setShadow({
color: “black”,
blur: 10,
offset: [10, 10],
alpha: 0.5
});
</script>
4.5.线段间连接点样式
连接点的样式可以是 miter , bevel 或 round。其中,默认的样式是 miter。
<script>
// 使用构造方法的config参数设置
var shape = new Kinetic.Circle({
lineJoin: “bevel”
});
// 用图形对象的方法设置
shape.setLineJoin(“round”);
</script>
4.6.图形的隐藏与显示
<script>
// 使用构造方法的config参数设置
var shape = new Kinetic.Circle({
visible: false
});
// 用图形对象的show方法显示图形
shape.show();
// 用图形对象的hide方法隐藏图形
shape.hide();
</script>
KineticJS教程(4)的更多相关文章
- KineticJS教程(12)
KineticJS教程(12) 作者: ysm 12.舞台 12.1.舞台的大小 舞台创建后还可以用舞台对象的setSize(width, height)方法来设置舞台的宽度与高度. <scr ...
- KineticJS教程(11)
KineticJS教程(11) 作者: ysm 11.对象的上下关系 11.1.层的上下关系 Kinetic的层是按照添加到舞台的次序,由下向上排列,上层遮盖下层的图形.每个层各自有一个ZIndex编 ...
- KineticJS教程(10)
KineticJS教程(10) 作者: ysm 10.在容器之间移动图形对象 Kinetic支持通过图形对象的moveTo(container)方法把图形对象从一个容器移动到另一个容器里,这个容器指 ...
- KineticJS教程(9)
KineticJS教程(9) 作者: ysm 9.选择器 Kinetic在舞台.层和组对象上都提供了get方法,用于返回这三者中包含的对象. 9.1.根据ID获取对象 要用id获取对象,首先要给对象 ...
- KineticJS教程(8)
KineticJS教程(8) 作者: ysm 8.动画 动画就是一帧帧的画面按照时间间隔显示出来,Kinetic给我们提供了一个舞台对象的onFrame方法,用这个方法可以绑定一个动画方法,我们要显 ...
- KineticJS教程(7)
KineticJS教程(7) 作者: ysm 7.图形变换 7.1.线性变化 Kinetic提供了一个图形对象的transitionTo(config)方法实现图形的线性变换,也就是从原始的状态线性变 ...
- KineticJS教程(6)
KineticJS教程(6) 作者: ysm 6.拖拽 6.1.拖拽功能 要实现Kinetic对象的拖拽功能很简单,只需要将图形对象的draggable属性设为true就可以了. <script ...
- KineticJS教程(5)
KineticJS教程(5) 作者: ysm 5.事件响应 5.1.图形的事件响应 图形对象对事件的响应处理可以使用 on() 方法绑定事件类型和相应方法. On() 方法需要一个事件类型参数和相应 ...
- KineticJS教程(3)
KineticJS教程(3) 作者: ysm 3.图形对象 3.1.Shape Kinetic提供了一个Shape对象用于在层上绘制图形,我们可以通过Kinetic.Shape()构造方法返回一个S ...
随机推荐
- RE:从零开始的AGC被虐(到)生活(不能自理)
RE:从零开始的AGC被虐(到)生活(不能自理) 「一直注视着你,似近似远,总是触碰不到.」 --来自风平浪静的明天 AtCoder Grand Contest 001 B: Mysterious L ...
- Java并发(十六):并发工具类——Exchanger
Exchanger(交换者)是一个用于线程间协作的工具类.Exchanger用于进行线程间的数据交换.它提供一个同步点,在这个同步点两个线程可以交换彼此的数据.这两个线程通过exchange方法交换数 ...
- 【BZOJ】2002: [Hnoi2010]Bounce 弹飞绵羊
2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 14802 Solved: 7507[Subm ...
- hdu 3435 图回路分割
将一个无向图分成许多回路,回路点交集为空,点幷集为V.幷最小化回路边权和. #include <cstdio> #include <cstring> #include < ...
- python开发_random
和java中的random()函数一样,在python中也有类似的模块random,即随机数 下面是我做的demo 运行效果: ==================================== ...
- python开发_python操作mysql数据库
如果你还没有准备好开发环境,你不妨花上一小点时间去看看:python开发_mysqldb安装 本篇blog是有关python操作mysql数据的相关内容. 我做了一个demo: 先看运行效果: mys ...
- 一次经典的tcp三次握手
TCP报头 在三次握手中使用的字段: 32位序列号 seq:表示的是本次报文发送的数据的第一个字节的序号. 32位确认号:ack 表示期望下一次应该接受到的报文的第一个字节的序号,若ack = N则 ...
- PAT甲级1016. Phone Bills
PAT甲级1016. Phone Bills 题意: 长途电话公司按以下规定向客户收取费用: 长途电话费用每分钟一定数量,具体取决于通话时间.当客户开始连接长途电话时,将记录时间,并且客户挂断电话时也 ...
- 在Windows下将Redis注册为本地服务
当前redis版本:3.2.100 通常情况下我们可以通过 redis-server.exe 和配置文件启动redis服务 : redis-server.exe redis.windows.conf ...
- sql中字符分割,日期判断,以及函数的应用
前两天公司有一个功能需求,客户给出几天的工作时间和休息,然后顾客的访问时间必须要在工作时间之内和休息时间之外,所以要求做一下判断.本来以为这个没什么,谁知道客户提供的工作时间段和休息时间段不定,给出的 ...