2016-08-29 9 views
2

jscolor-colorpickerをfabricjs-ITextと併用して、マウス移動時のカラーのライブプレビューを提供しています。ここで涼しくない唯一の事は、半透明の選択強調表示がテキスト編集モードでのcolorpreviewを台無しにしていることです。選択のハイライトを削除する方法や選択を完全に透明にする方法に関するアイデアはありますか?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(); 
     } 
}; 

EDIT 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(); 
     } 
    }; 
+1

これはiText®の質問ではありません。 iText質問としてタグ付けできる技術については、[Stack Overflowに関するiTextドキュメント](http://stackoverflow.com/documentation/itext/)を参照してください。 fabricjsの人たちは、iTextという商標名を全く違うものに使っていたので、不必要な混乱を招いてしまった。 –

+0

iTextタグが削除されました。 – Flemming

答えて

2

多くのオプションがあります。選択色のITextのプロパティはselectionColorで、キーワードはtransparentまたはrgba値:rgba(0,0,0,0)で完全に透明に設定できます。

あなたはiTextのオブジェクトへの参照を取得した場合、あなたはまた、いくつかのことを行うことができます:0

    1. 変更startSelectionendSelectionはiTextのオブジェクトの.exitEditing()関数を呼び出します。
    2. ますが、ユーザはあなたが戻って、それが何であったかを選択するように設定することができます色を選択させることで行われるときだけ.discardActiveObject()

    とアクティブなオブジェクトとしてiTextのオブジェクトを削除します。

  • +0

    selectionColorは機能しましたが、この場合は他のソリューションは使用できません。それらはすべて選択を破壊し、それによって編集も破棄します。しかしselectionColor :-)で親切になる – Flemming

    +0

    はい... 1と2の場合、色の選択が終わった後、 'startSelection'と' endSelection'を前の状態に戻す必要があります。 – StefanHayden

    関連する問題