Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将圆角矩形变换为圆形_Javascript_Canvas_Html5 Canvas_Paperjs - Fatal编程技术网

Javascript 将圆角矩形变换为圆形

Javascript 将圆角矩形变换为圆形,javascript,canvas,html5-canvas,paperjs,Javascript,Canvas,Html5 Canvas,Paperjs,我一直在制作一个特定的动画,在这个动画中,我需要将圆角矩形形状转换为圆形。我查看了paper.js的文档,没有找到任何预定义的函数来实现这一点 -> 动画需要平滑。由于我使用的矩形数量非常多,我不能使用“删除当前圆角矩形”和“重新绘制一个更圆角的版本”方法。它降低了性能,动画变得迟钝 这是我用来生成圆角矩形的代码 // Had to paste something to post the question // Though the whole code can be seen on codep

我一直在制作一个特定的动画,在这个动画中,我需要将圆角矩形形状转换为圆形。我查看了paper.js的文档,没有找到任何预定义的函数来实现这一点

->

动画需要平滑。由于我使用的矩形数量非常多,我不能使用“删除当前圆角矩形”和“重新绘制一个更圆角的版本”方法。它降低了性能,动画变得迟钝

这是我用来生成圆角矩形的代码

// Had to paste something to post the question
// Though the whole code can be seen on codepen link
var rect = new Rectangle();
var radius = 100, origin = {x: 100, y: 100};
rect.size = new Size(radius, radius);
rect.center = new Point(origin.x, origin.y);
var cornerSize = radius / 4;
var shape = new Path.Rectangle(rect, cornerSize);
准备此示例以显示进度

如果我们可以使用任何其他对象类型计算出整个动画,那也很好。现在我找不到任何可以将圆角矩形转换为圆形的属性

我还制作了对象颜色和位置的动画。我查阅了许多文档,以了解彩色动画


PS:如果有其他更好的技术来设置对象颜色的动画,也请分享。

将角大小更改为以下值

  var cornerSize = circle.radius / 1;

将拐角尺寸更改为以下值

  var cornerSize = circle.radius / 1;

首先必须创建一个圆角矩形路径。然后,动画中的每一步都必须修改路径的八段。这仅适用于路径对象,而不是矩形是形状时

线段点和控制柄的设置必须如下所示:

κkappa在paper.js中定义为数值。kappa更多关于kappa

更改半径的代码可能如下所示:


首先必须创建一个圆角矩形路径。然后,动画中的每一步都必须修改路径的八段。这仅适用于路径对象,而不是矩形是形状时

线段点和控制柄的设置必须如下所示:

κkappa在paper.js中定义为数值。kappa更多关于kappa

更改半径的代码可能如下所示:


非常感谢你。所以我是对的,形状没有这样的功能。我现在必须将所有形状更改为路径。这正是我需要的。@AkashK。事实上,我刚刚找到了一种使用形状的方法。看看我的新方法答案的编辑。我有点想知道你是如何找到这个答案的?是否有我遗漏的关于形状的文档或文章。通常情况下,没有人会考虑为矩形设置半径:p我希望我能再次对答案进行投票。如果你查看形状参考,你会看到半径属性。我刚试过,效果很好。非常感谢。所以我是对的,形状没有这样的功能。我现在必须将所有形状更改为路径。这正是我需要的。@AkashK。事实上,我刚刚找到了一种使用形状的方法。看看我的新方法答案的编辑。我有点想知道你是如何找到这个答案的?是否有我遗漏的关于形状的文档或文章。通常情况下,没有人会考虑为矩形设置半径:p我希望我能再次对答案进行投票。如果你查看形状参考,你会看到半径属性。我只是试了一下,结果成功了。
var size = 100;
var rect = new Shape.Rectangle(new Rectangle(new Point(100, 100), new Size(size, size)), 30);
rect.strokeColor = "red";

var step = 1;
var percentage = 0;

function onFrame(event) {
    percentage =  Math.min(50, Math.max(0, percentage + step));
    rect.radius = size * percentage / 100;
    if (percentage >= 50 || percentage <= 0) {
        step *= -1;
    }
}