javascript - IText 的 Canvas 大小

标签 javascript fabricjs

我正在开发 Canvas 编辑器项目。我正在使用 IText 在 Canvas 中添加文本。用户可以更改字体、将文本设置为粗斜体等。当用户想要更改文本的字体大小时,他可以但文本的大小不以 px 大小变化,这是一个问题。如果需要我可以放置所有代码。并且可以显示实时版本。现在要更改大小,我使用此代码

document.getElementById('fontSize').onchange = function() {
  canvas.getActiveObject().set("FontSize", this.value);
  canvas.renderAll();
}
<div class="select-wrapper font-size">
  <select id="fontSize">
    <option value="10">10</option>
    <option value="12">12</option>
    <option value="14">14</option>
    <option value="16">16</option>
    <option value="18">18</option>
    <option value="20">20</option>
    <option value="22">22</option>
    <option value="24">24</option>
    <option value="26">26</option>
    <option value="28">28</option>
    <option value="30">30</option>
    <option value="32">32</option>
    <option value="34">34</option>
    <option value="36">36</option>
    <option value="38">38</option>
    <option value="40">40</option>
    <option value="42">42</option>
    <option value="44">44</option>
    <option value="46">46</option>
    <option value="48">48</option>
    <option value="50">50</option>
    <option value="52">52</option>
    <option value="54">54</option>
    <option value="56">56</option>
    <option value="58">58</option>
    <option value="60">60</option>
    <option value="62">62</option>
    <option value="64">64</option>
    <option value="66">66</option>
    <option value="68">68</option>
    <option value="70">70</option>
    <option value="72">72</option>
    <option value="74">74</option>
    <option value="76">76</option>
    <option value="78">78</option>
    <option value="80">80</option>
  </select>
</div>

最佳答案

很抱歉,您的假设是错误的,请将此答案视为长评论,

The problem when user want to change Font Size of the text he can but the text change not in px size.

正如您在 fabric.js source code 中所读到的那样:

/**
* Font size (in pixels)
* @type Number
* @default
*/
fontSize:             40,

默认(编辑和唯一)单位为像素。

如果运行下面的可执行代码片段,您可以看到 Fabric iText,并输入文本,同步更新其字体大小

$(function() {
  var canvas = new fabric.Canvas('c');
  var iTextSample = new fabric.IText('hello\nworld', {
    left: 50,
    top: 50,
    fontFamily: 'Helvetica',
    fontSize: $('#fontSize').val(),
  });
  $('#dText').css('fontSize', $('#fontSize').val() + 'px');

  canvas.add(iTextSample);
  canvas.setActiveObject(iTextSample);
  $('#fontSize').change(
    function() {
      $('#dText').css('fontSize', this.value + 'px');
      canvas.getActiveObject().set("fontSize", this.value);
      canvas.renderAll();
    });


});
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.6.4/fabric.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<canvas id="c" width="150" height="150" style="border: 1px solid rgb(204, 204, 204);"></canvas>

<select id="fontSize">
  <option value="10">10</option>
  <option value="12">12</option>
  <option value="14">14</option>
  <option value="16">16</option>
  <option value="18">18</option>
  <option value="20">20</option>
  <option value="22">22</option>
  <option value="24">24</option>
  <option value="26">26</option>
  <option value="28">28</option>
  <option value="30">30</option>
</select>

<input id="dText" value="hello world">

关于javascript - IText 的 Canvas 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40353016/

相关文章:

javascript - Fabricjs获取缩放或平移后的RGB像素值

javascript - 未捕获的类型错误 : Cannot set property 'color' of undefined

javascript - 我使用 fabricJs 并希望在缩放时获得鼠标位置

javascript - 使 YouTube api 在第一个视频结束时自动开始另一个视频

javascript - 当用户将数据输入表单时要知道什么事件?

javascript - Angular UI 警报在 IE 8 上不起作用

javascript - 如何从另一个组件触发 useEffect

javascript - 如何在第一次点击后禁用此按钮 5 秒?

javascript - Fabric.js 从现有形状创建新类 fromObject 错误

javascript - Canvas 响应式媒体屏幕最小宽度 - FabricJS