• 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是指定线性渐变线上关键点的颜色值,位置参数是一个介于01之间的浮点数,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是指定径向渐变圆间的关键距离的颜色值,位置参数是一个介于01之间的浮点数,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 }

    imageObjjavascriptImage对象,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,

    y : -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.透明

    透明度是一个01之间的浮点值,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>

  • 相关阅读:
    链表
    链式学习法:提升技术深度
    数组
    写点什么
    7 天掌握算法面试必考知识点: 作业安排及如何提交
    创建Mac OS root账户
    正则表达式匹配及替换
    Xcode 10 之New Build System & Legacy Build System 旧版构建系统
    性能指标:TPS、QPS、RT、吞吐量
    Objective-C和Swift语言特性
  • 原文地址:https://www.cnblogs.com/zhangleblog/p/3912172.html
Copyright © 2020-2023  润新知