zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    mysq 日期相减
    说说时间观与时间管理——北漂18年(71)
    ionic之切换开关
    ionic之单选框
    SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE locks在RR模式下可以看到最新的记录
    14.5.2.3 Consistent Nonlocking Reads 一致性非锁定读
    14.5.2.2 autocommit, Commit, and Rollback
    14.5.2 事务隔离级别
    对于唯一索引使用唯一条件搜索, InnoDB 只锁定找到的index record,不是它之前的区间
    mysql explain 解释
  • 原文地址:https://www.cnblogs.com/zhangleblog/p/3912172.html
Copyright © 2011-2022 走看看