[英]How do i clean drawn path on canvas in android
我的Android項目需要一些幫助。 我有一個畫布,並用一些位圖填充它。 而且我有一個指針在畫布上畫了一條線。 我的問題是如何清理我之前畫過的線? 我應該在畫布上調用什么方法? 我已經嘗試過Canvas.drawColor()
, invalidate()
,這是行不通的。
以及Canvas.drawColor()
的功能是什么,請幫助我解決問題。 提前致謝
更新! 如果我做這樣的代碼:
@Override
protected void onDraw(Canvas canvas) {
// fills the canvas with black
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath(mPath, p);
obaby.draw(canvas);
}
我在代碼中將invalidate()
放在哪里? 如果我想使用按鈕清除畫布,應該使用什么代碼?
更新!
我這樣寫了onDraw:
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
if(letsdraw){
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath(mPath, p);
obaby.draw(canvas);
}
}
重置按鈕中的方法是這樣的:
public void rst(){
letsdraw = false;
invalidate();
Log.v("tag", "this method called");
}
但是當我調用該方法時畫布上沒有任何變化。 我在上面的代碼上寫錯了嗎?
使您的邏輯像這樣。 在一定條件下在Canvas
上畫線。 檢查是否要畫線,然后畫線。
骨架代碼-
@Override
protected void onDraw(Canvas canvas)
{
if(needToDrawLine)
{
//draw the line
}
// Other drawing stuff
}
現在只需更新您的needToDrawLine
變量並調用invalidate()
。 您將得到結果。 讓我知道它是否有效。
更新:
每當您調用invalidate()
onDraw()
方法都會調用。 因此, onDraw()
都會執行。 辦法是,您必須防止它繪制某些零件。 要重繪整個視圖時,您將調用invalidate()
,例如-用於清除畫布的按鈕。
canvas.drawColor(Color.BLACK);
這條線將您的整個視圖清除為黑色。
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
這條線在(0,0)處繪制位圖。
canvas.drawPath(mPath, p);
這條線繪制路徑mPath
。
obaby.draw(canvas);
其他一些對象繪制自身。
現在-例如,您想在按下按鈕時清除屏幕。 只需初始化變量即可繪制所有內容。 並在按鈕單擊中更新變量。
public boolean drawEverything = true;
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
if(drawEverything)
{
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath(mPath, p);
obaby.draw(canvas);
}
}
public void buttonClicked( ... )
{
drawEverything = false;
}
我在我的活動中使用這種激怒的油漆
mBitmap.eraseColor(Color.TRANSPARENT);
mPath.reset();
mView.invalidate();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.