【问题标题】:how to remove text drawn from Canvas in android如何在android中删除从Canvas中绘制的文本
【发布时间】:2012-07-25 09:04:49
【问题描述】:

我想从Canvas 中删除我使用以下代码绘制的文本。

   canvas.drawText(label, width / 4, height / 3, paint_text);

完成后,用户可以编辑该文本,因此我想在编辑之前从画布中删除已经绘制的文本并编写新文本。

我想明确一点,我用 图像位图 在画布上写文本。

还有其他方法吗?请帮我解决这个问题。

【问题讨论】:

  • 试试这个 canvas.drawColor(Color.WHITE); // 或者黑色你的背景颜色是什么

标签: android canvas drawable


【解决方案1】:

从画布中删除文本的唯一方法是采用一个条件,如果条件不满足,则不要绘制这些文本。一般我们使用canvas来连续绘制。

if(flag){
///draw text
}else{
//Do not draw
}

再次调用 onDraw() 方法以显示新的更改,如果您在同一个线程中调用 inValidate() 或从不同线程调用 postInvalidate()

【讨论】:

    【解决方案2】:

    我建议您在每次编辑文本时重绘,这可以通过在您的 setText() 方法中调用 invalidate() 方法来完成。所以让用户编辑文本,然后简单地重绘画布:

    public setText(String text)
    { 
         label = text;
         this.invalidate();
    }
    
    ...
    //inside your draw method
    canvas.drawText(label, width / 4, height / 3, paint_text);
    ...
    

    【讨论】:

      【解决方案3】:

      使用无效();看下面的例子

      @Override

          protected void onDraw(final Canvas canvas) {
      

      //invalidate 可以删除然后重新创建另一个

              invalidate();
              // put your drawing commands here
              paintText.setColor(Color.GRAY);
              paintText.setTextSize(Util.dpToPx(BaseActivity.this, OVERLAY_TEXT_SIZE_INT));
              paintText.getTextBounds(overlayText, 0, overlayText.length(), bounds);
              canvas.drawText(overlayText,
                      getWidth() - (bounds.width() + TEN),
                      this.getHeight() - OVERLAY_TEXT_SIZE_INT,
                      paintText);
      
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-26
        • 2020-02-15
        • 1970-01-01
        • 2021-06-30
        • 2013-01-28
        • 2018-09-21
        • 1970-01-01
        相关资源
        最近更新 更多