我想从Canvas
使用以下代码绘制的文本中删除文本。
canvas.drawText(label, width / 4, height / 3, paint_text);
完成后,用户可以编辑该文本,因此我想在编辑之前从画布中删除已经绘制的文本并编写新文本。
我想澄清一件事,我用图像位图在画布上写文本。
是否有可能以任何其他方式?请帮我解决这个问题。
从画布中删除文本的唯一方法是采用一个条件,如果条件不满足,则不要绘制这些文本。一般我们使用canvas来连续绘制。
if(flag){
///draw text
}else{
//Do not draw
}
再次调用 onDraw() 方法以显示新更改 如果您在同一个线程中调用 inValidate() 或来自不同线程的 postInvalidate()
我建议您在每次编辑文本时重绘,这可以通过在 setText() 方法中调用 invalidate() 方法来完成。所以让用户编辑文本,然后简单地重绘画布:
public setText(String text)
{
label = text;
this.invalidate();
}
...
//inside your draw method
canvas.drawText(label, width / 4, height / 3, paint_text);
...
使用无效();见下面的例子
@覆盖
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);
}