【问题标题】:How to make selection highlight transparent in fabricjs IText?如何在fabricjs IText中使选择突出显示透明?
【发布时间】:2017-01-05 06:03:55
【问题描述】:

我将 jscolor-colorpicker 与 fabricjs-IText 结合使用,让我可以在鼠标移动时实时预览颜色。现在唯一不酷的是半透明选择突出显示在文本编辑模式下弄乱了颜色预览。关于如何删除选择突出显示或使选择完全透明的任何想法?

我在 jsdoc 中找不到任何与选择颜色相关的属性!? http://fabricjs.com/docs/fabric.IText.html

<input value="ffcc00"  id="fill" class="jscolor {onFineChange:'itext_setcolor(this)',hash:true}">

window.itext_setcolor = function(val) {
        obj = canvas.getActiveObject();
        if (obj) {
            if (obj.isEditing) {
                 setStyle(obj, 'fill', '#' +val); 
            } else 
            {  
                obj.setFill('#' + val);
            }
          canvas.renderAll();
        }  
 };

编辑 1

感谢@STHayden 给了我正确的答案。这是文本选择更改时重新出现突出显示的最终工作代码。

...
  canvas.on('text:selection:changed', onTextChangedIText);
...
  function onTextChangedIText() {
       var obj = canvas.getActiveObject();
        if (obj.selectionStart>-1) {
            obj.set({'selectionColor':'rgba(17,119,255,0.3)'}); 
        }
    } 

 window.itext_setcolor = function(val) {
         obj = canvas.getActiveObject();
        if (obj) {
            if (obj.isEditing) {
                 obj.set({'selectionColor':'transparent'});
                 setStyle(obj, 'fill', '#' +val); 
            } else
            {  
                obj.setFill('#' + val);
            }
            canvas.renderAll();
        }  
    };

【问题讨论】:

  • 这不是 iText® 问题。请参阅iText documentation on Stack Overflow 了解可标记为 iText 问题的技术。来自fabricjs 的人将商标名称iText 用于完全不同的东西,造成不必要的混淆。
  • 好的!删除了 iText 标记。

标签: javascript css fabricjs jscolor


【解决方案1】:

你有很多选择。 IText 上选择颜色的属性是selectionColor,您可以使用关键字transparent 或rgba 值将其设置为完全透明:rgba(0,0,0,0)

如果您获得对 IText 对象的引用,您还可以做一些事情:

  1. startSelectionendSelection 更改为0。
  2. 在 IText 对象上调用 .exitEditing() 函数。
  3. 只需使用.discardActiveObject() 将 IText 对象作为活动对象删除即可

当您完成让用户选择颜色后,您可以将选择设置回原来的样子。

【讨论】:

  • selectionColor 有效,但在这种情况下没有其他可用的解决方案。它们都破坏了选择,从而也破坏了编辑。但是喜欢 selectionColor :-)
  • 是...对于 1 和 2,您需要在颜色选择完成后将 startSelectionendSelection 设置回之前的状态。
猜你喜欢
  • 2019-02-06
  • 2018-08-09
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 2014-06-13
  • 2021-10-22
  • 2016-07-11
相关资源
最近更新 更多