我有一张背景图片(地图),我需要定期绘制你在这里的图标。我使用Canvas在地图上绘制图标。假设在按钮点击时触发绘图过程(参见下面的代码),我该如何删除上一张图?
private void displayUserPos(Point userPos) {
Bitmap marker = BitmapFactory.decodeResource(getResources(), R.drawable.ic_yah);
canvas.drawBitmap(marker, (float)userPos.getX(), (float)userPos.getY(), null);
imgView.setImageBitmap(fmOverlay);
}
答案 0 :(得分:46)
canvas.drawColor(0, Mode.CLEAR);
更多信息http://developer.android.com/guide/topics/graphics/index.html
答案 1 :(得分:18)
canvas.drawColor(0, Mode.CLEAR);
答案 2 :(得分:6)
overlayBitmap.eraseColor(Color.TRANSPARENT);
这只是将现有的Bitmap设置为全透明。
我用它来“清除”我用来叠加在另一个上面的Bitmap对象来显示裁剪窗口。
答案 3 :(得分:2)
只需用颜色或图片填充画布:
canvas.drawColor(Color.BLACK);
如果要保留某些元素并删除某些元素,可以将它们存储在ArrayList中。然后,您可以根据需要在此ArrayList中添加和删除元素,然后在onDraw()中迭代它们。
for (Iterator<GraphicObject> it = _graphics.iterator(); it.hasNext();) {
GraphicObject graphic = (GraphicObject)it.next();
coords = graphic.getCoordinates();
canvas.drawCircle(coords.getX(), coords.getY(), (float)coords.getRadius(), paint);
}
答案 4 :(得分:1)
尝试如下,它可以用来完全清除画布。
宣言应该是这样的,
ArrayList<Pair<Path, Paint>> paths = new ArrayList<Pair<Path, Paint>>();
ArrayList<Pair<Path, Paint>> undonePaths = new ArrayList<Pair<Path, Paint>>();
并清除使用
undonePaths.clear();
paths.clear();
invalidate();
答案 5 :(得分:0)
Private Sub Workbook_Open()
'Application launch
Application.Visible = False 'Hide Excel window
EnableResize = False
Application.DisplayFullScreen = True 'Preset fullscreeen mode
Application.CommandBars("Full Screen").Enabled = False 'Hide command bars
WelcomeForm.Show 'Show welcome UserForm
End Sub
了解更多信息Click here
答案 6 :(得分:0)
我写了一个函数来帮助解决这个问题。通常我设置一个布尔值来检查页面是否已更改,如果有,我调用此函数,使用return boolean设置我的newpage布尔值。
private boolean clearCanvas(Canvas canvas){
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
return false;
}
Color.TRANSPARENT在这方面并不是真的需要,你可以不用。