Svg raphael js,调整画布大小,然后设置ViewBox以显示所有元素

Svg raphael js,调整画布大小,然后设置ViewBox以显示所有元素,svg,raphael,Svg,Raphael,我的画布有问题 我的画布第一个宽度=1300,高度=500 然后我将其调整为宽度=800px,高度=500 我尝试使用setViewBox来缩放它。但当我拖动鼠标时,鼠标不能固定在元素上 @canvas.resize(800, 500) @canvas.setViewBox(0,0, ??, ??) 怎么计算呢 谢谢你的帮助。:) 您可以使用以下方法计算必要的尺寸: function recalculateViewBox( canvas ) { var max_x = 0, max_y

我的画布有问题

我的画布第一个宽度=1300,高度=500

然后我将其调整为宽度=800px,高度=500

我尝试使用setViewBox来缩放它。但当我拖动鼠标时,鼠标不能固定在元素上

@canvas.resize(800, 500)
@canvas.setViewBox(0,0, ??, ??)
怎么计算呢


谢谢你的帮助。:)

您可以使用以下方法计算必要的尺寸:

function recalculateViewBox( canvas )
{
    var max_x = 0, max_y = 0;
    canvas.forEach( function( el )
        {
            var box = el.getBBox();
            max_x = Math.max( max_x, box.x2 );
            max_y = Math.max( max_y, box.y2 );
        } );
    if ( max_x && max_y )
        canvas.setViewBox( 0, 0, max_x, max_y );
}
基本上,您只需遍历画布的内容并构造一个元边界框,然后调整viewBox以适应它


如果您想有点新奇,您可以始终设置viewbox的动画,使其流畅地过渡到新的大小。功能上不重要,但

Ops,如果我的元素没有放置在画布的正确位置,则具有最大宽度和高度。缩放仅修复所有元素。我需要缩放并修复窗口:)