我知道你可以使用Kinetic.Wedge绘制一个楔子:
var compassArc = new Kinetic.Wedge({
x: stage.getWidth() / 2,
y: stage.getHeight() / 2,
radius: 70,
angleDeg: 60,
fill: 'red',
stroke: 'black',
strokeWidth: 4,
rotationDeg: -90
});
这会在整个事物周围绘制一个黑色轮廓的“披萨片”。我只想要披萨的“外皮”,没有直线回到圆圈的中心。我怎么能这样做?
将填充设置为null
会删除红色,但会留下轮廓。
答案 0 :(得分:5)
如何使用arc创建自定义形状?
http://www.html5canvastutorials.com/tutorials/html5-canvas-arcs/
请记住,不要关闭路径,也不要填写笔画。如果是这样,你会得到你想要的。它是一个KineticJS对象,因此您可以随意拖动。
以下是工作示例。
http://jsfiddle.net/bighostkim/WzxxH/
var arc = new Kinetic.Shape({
drawFunc: function(canvas) {
var context = canvas.getContext();
var x = stage.getWidth() / 2;
var y = stage.getHeight()/2;
var radius = 70;
var startAngle = 1 * Math.PI;
var endAngle = 0 * Math.PI;
var context = canvas.getContext('2d');
context.beginPath();
context.arc(x, y, radius, startAngle, endAngle, false);
//context.closePath();
canvas.stroke(this);
},
fill: '#00D2FF',
stroke: 'black',
strokeWidth: 4,
draggable:true
});
答案 1 :(得分:1)
var arc = new Kinetic.Shape({
x: 100,
y: 100,
stroke: '#000',
strokeWidth: 4,
dash: [8, 4],
drawFunc: function(context) {
var radius = 50;
var startAngle = 1 * Math.PI;
var endAngle = 0 * Math.PI;
context.beginPath();
context.arc(0, 0, radius, startAngle, endAngle, false);
context.fillStrokeShape(this);
},
draggable:true
});
答案 2 :(得分:0)
您可以使用Kinetic.Arc课程。 使outerRadius等于innerRadius,你就会得到你想要的东西。
this.arc = new Kinetic.Arc({
innerRadius: 90,
outerRadius: 90,
stroke: 'red',
strokeWidth: 2,
angle: 60,
rotationDeg: 210
});