【发布时间】:2021-09-04 10:25:45
【问题描述】:
我正在向画布添加一个矩形/圆形,并使用范围类型输入更改 strokeWidth。 如果我们有 strokeWidth:5 和 strokeWidth(1-10) 的范围,那么在 px/em/% 中的 strokeWidth 值是多少。 实际上,我想知道每当我们尝试增加 strokeWidth 时,实际宽度以 px 增加多少。
查看代码示例:
var canvas = new fabric.Canvas('canvas1');
$('.add_shape').click(function() {
var cur_value = $(this).attr('data-rel');
if (cur_value != '') {
switch (cur_value) {
case 'rectangle':
var rect = new fabric.Rect({
left: 50,
top: 50,
fill: '#aaa',
width: 50,
height: 50,
opacity: 1,
stroke: '#000',
strokeWidth: 1,
noScaleCache: false,
strokeUniform: true,
});
canvas.add(rect);
canvas.setActiveObject(rect);
break;
case 'circle':
var circle = new fabric.Circle({
left: 50,
top: 50,
fill: '#aaa',
radius: 50,
opacity: 1,
stroke: '#000',
strokeWidth: 1,
noScaleCache: false,
strokeUniform: true
});
canvas.add(circle);
canvas.setActiveObject(circle);
break;
}
}
});
/* Control the border */
$('#control_border').change(function() {
var cur_value = parseInt($(this).val());
var activeObj = canvas.getActiveObject();
if (activeObj == undefined) {
alert('Please select the Object');
return false;
}
activeObj.set({
strokeWidth: cur_value
});
canvas.renderAll();
});
button {
max-resolution: 10px;
height: 30px;
}
div {
margin: 10px
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.7.0/fabric.min.js"></script>
<div>
<button class="add_shape" data-rel="circle">Add Circle</button>
<button class="add_shape" data-rel="rectangle">Add Rectangle</button>
<label class="control-label">Border</label>
<input id="control_border" type="range" min="0" max="10" step="1" value="0" />
</div>
<canvas id="canvas1" width="600" height="300" style="border:1px solid #000000;"></canvas>
【问题讨论】:
-
@AlonEitan ,我已经更新了问题。
-
我已经阅读了你的问题 3 次,但我仍然不清楚你在问什么。也许尝试将您提供的代码改写和更新为有效的 sn-p?
-
@melchiar ,如果我要增加 strokewidth(1-10) 值。边框宽度正在增加。我想知道以 px/em/% 为单位的边框宽度
-
笔画的像素宽度会根据缩放、屏幕分辨率和导出大小而变化,而不仅仅是笔画宽度。类似地,em 是一个与字体大小相关的单位,您的笔画没有被用于。或许您可以解释一下为什么需要这些单位?
-
k,因此您需要 CSS 像素来计算对象的屏幕尺寸。我会发布一个答案。
标签: javascript html vue.js fabricjs