konva系列教程4:图形属性

大家好,我是前端西瓜哥,我们今天来看看图形的一些常见属性。

几何属性

{
  x: 10,
  y: 10,
  width: 50,
  height: 50
}

x 和 y 代表的是图形的 位置,对于矩形来说,是左上角。对于圆形、圆环这些来说,则是在圆心处。

这个位置也是图形进行变形的参考点,或者说是旋转时的中心

offsetX 和 offsetY 可以改变图形的位置。offset 其实是将画布坐标系的原点移动一定距离,再绘制图形。

比如对矩形,我们将 offsetX 和 offsetY 设置为 width/2 和 height/2,我们就能让矩形的位置跑到矩形的中点。

width 和 height 为图形的宽高。但对于圆形类图形,则是通过半径 radius 来设置大小。

填充(fill)

用法:fill: #f04

修改图形颜色:

rect.fill('green');

fill 方法不仅可以设置颜色,还可以获取颜色,只要不传入参数即可:

const fill = rect.fill();

当然我们还可以使用高级的填充图片、渐变色的功能,需要用到 fillPatternImagefillLinearGradientStartPointfillLinearGradientEndPointfillLinearGradientColorStops 等方法,内容有点多,这里就不展开讲了。

描边(stroke)

描边相关的样式很多,这里只介绍最常用的 stroke 和 strokeWidth。

用法:stroke: '#000' strokeWidth: 4

修改图形的描边颜色、线宽:

rect.stroke('blue').strokeWidth(8);

konva 支持链式写法。

链式写法,其实就是一个对象,执行了方法后,又返回了这个对象。

这样的话我们就可以将多个方法的调用链接起来,提高代码可读性,常见于修改对象属性值。

获取描边颜色、线宽

const stroke = rect.stroke();
const strokeWidth = rect.strokeWidth();

不透明度(opacity)

用法:opcity: 0.5

设置透明度:

rect.opcity(0.3)

获取不透明度的值:

const opcity = rect.opcity();

显示/隐藏(visible)

用法:visible: true

显示图形:

rect.show();
// 或者
rect.visible(true);

隐藏图形:

rect.hide();
// 或
rect.visible(false);

本质其实是修改图形的 visible 属性,然后重新渲染。show 和 hide 只是语义化的封装。

鼠标样式

我们不能像操作 DOM 元素一样,直接给图形元素设置 cursor 属性。

但我们可以在光标移动到图形上的时候,动态改变 canvas 挂载的 DOM 元素的 cursor 属性。

rect.addEventListener('mouseenter', () => {
  stage.container().style.cursor = 'move'
})

rect.addEventListener('mouseleave', () => {
  stage.container().style.cursor = ''
})

结尾

不同形状有各自的属性,具体可以看 konva 的文档:

https://konvajs.org/api/Konva.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,你的问题是关于Konva操纵HTML5画布的。你可以继续提问,我会尽力回答。现在,让我们来探讨第三部分的内容:复杂的形状和精灵。 在Konva中,你可以使用多个形状来创建复杂的形状。这些形状可以是矩形、圆形、线条等,它们可以组合成一个完整的形状。你可以使用Konva.Group对象将这些形状组合在一起,以便于对它们进行操作。下面是一个创建复杂形状的示例代码: ```javascript var rect = new Konva.Rect({ x: 10, y: 10, width: 100, height: 50, fill: 'red' }); var circle = new Konva.Circle({ x: 60, y: 60, radius: 30, fill: 'green' }); var line = new Konva.Line({ points: [0, 0, 100, 100], stroke: 'blue', strokeWidth: 5 }); var group = new Konva.Group(); group.add(rect, circle, line); ``` 在上面的代码中,我们创建了一个矩形、一个圆形和一条线段,并将它们添加到了一个组中。这个组可以像其他形状一样进行操作。 除了使用Konva.Group组合形状之外,你还可以使用Konva.Sprite对象来创建动画。Konva.Sprite是一个可重复播放的序列帧动画,它可以从一个图像集中按顺序显示图像。下面是一个使用Konva.Sprite创建动画的示例代码: ```javascript var imageObj = new Image(); imageObj.onload = function() { var sprite = new Konva.Sprite({ x: 50, y: 50, image: imageObj, animation: 'standing', animations: { standing: [ // array of coordinates 0, 0, 49, 109, 52, 0, 49, 109, 105, 0, 49, 109, 158, 0, 49, 109, 211, 0, 49, 109, 264, 0, 49, 109, 317, 0, 49, 109, 370, 0, 49, 109 ] }, frameRate: 10, frameIndex: 0 }); // add the sprite to the layer layer.add(sprite); // start sprite animation sprite.start(); }; imageObj.src = 'path/to/image.png'; ``` 在上面的代码中,我们创建了一个Konva.Sprite对象,并将其添加到图层中。我们还定义了一个动画序列,并将其指定为Sprite的“animation”属性。最后,我们启动了Sprite的动画。 这就是Konva的复杂形状和精灵的基础知识。希望这些信息能够帮助你更好地使用Konva操纵HTML5画布。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值