0

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

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

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

我想澄清一件事,我用图像位图在画布上写文本。

是否有可能以任何其他方式?请帮我解决这个问题。

4

3 回答 3

1

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

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

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

于 2012-07-25T09:11:50.230 回答
1

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

public setText(String text)
{ 
     label = text;
     this.invalidate();
}

...
//inside your draw method
canvas.drawText(label, width / 4, height / 3, paint_text);
...
于 2012-07-25T09:12:29.950 回答
0

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

@覆盖

    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);

    }
于 2017-06-28T07:48:39.220 回答