【问题标题】:Adding text tool to drawing app HTML, Canvas将文本工具添加到绘图应用程序 HTML、Canvas
【发布时间】:2017-06-01 19:24:35
【问题描述】:

我正在尝试将文本工具添加到我正在使用输入框进行开发的drawing app

是否可以将文本应用到画布上按回车键或在框外单击并破坏输入框?

HTML

<span id="tools">
  <button id="text" class="texttool">txt</button>
</span>

<canvas id="sketch"></canvas>

JS

    var canvas, ctx;
    var inputBox=0;

    function drawText(ctx,x,y,size) {
    if (inputBox==0){
        inputBox=1;
          var input = new CanvasInput({
              x: mouseX,
              y: mouseY,
              canvas: document.getElementById('sketch'),
              fontSize: 18,
              fontFamily: 'Arial',
              fontColor: '#212121',
              fontWeight: 'bold',
              width: 300,
              padding: 8,
              borderWidth: 1,
              borderColor: '#000',
              borderRadius: 3,
              boxShadow: '1px 1px 0px #fff',
              innerShadow: '0px 0px 5px rgba(0, 0, 0, 0.5)',
              placeHolder: 'Enter message here...'
              });
          }
    }

    function init() {
        canvas = document.getElementById('sketch');
        canvas.width = window.innerWidth;
        canvas.height = window.innerHeight;

        if (canvas.getContext)
            ctx = canvas.getContext('2d');

        if (ctx) {
            canvas.addEventListener('mousedown', sketch_mouseDown, false);
            canvas.addEventListener('mousemove', sketch_mouseMove, false);
            window.addEventListener('mouseup', sketch_mouseUp, false);
        }
    }

    var onTool = function() {

        if ( tool == 'brush' )
        {   drawLine(ctx,mouseX,mouseY,2); }

        else if ( tool == 'eraser' )
        {   drawEraser(ctx,mouseX,mouseY,2); }

        else if ( tool == 'text' )
        {   drawText(ctx,mouseX,mouseY,2); }
    };

【问题讨论】:

  • 让它变得更简单,尝试为使边框不可见的框赋予css样式

标签: javascript jquery html html5-canvas


【解决方案1】:

您可以更改 drawText 函数以隐藏框的边框。

这是一个简单的解决方案,看起来好像没有盒子,但在创建时您也不会看到它。

innerShadow: '0px 0px 5px rgba(0, 0, 0, 0.5)', 更改为innerShadow: '0px 0px 0px rgba(0, 0, 0, 0.5)', 并将borderWidth: 1 更改为0

希望有帮助

【讨论】:

  • 感谢您的回答,但我需要以某种方式将文本绘制到画布上,这样我就无法正确使用其他工具,我猜我也不能重复使用文本。
猜你喜欢
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
相关资源
最近更新 更多