2012-03-21 3 views
0

Я хочу нарисовать круг на холсте и оставить его след, а каждый раз нарисовать новый круг. Как мне это сделать? Все, что я могу сделать, это перемещать круг вокруг.Нарисуйте новый круг на растровом Android

-CanvasTest Класс

package canvas.test; 

import android.app.Activity; 
import android.os.Bundle; 

public class CanvastestActivity extends Activity { 
/** Called when the activity is first created. */ 
float x = 80; 
float y = 20; 
float r = 15; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Draw2D d = new Draw2D(this, x, y, r); 
    try { 
     Thread.sleep(100); 
     x++; 
     y++; 
    } catch(InterruptedException e) {} 
    setContentView(d); 
} 

}

--Draw2D Класс

package canvas.test; 

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.view.View; 

public class Draw2D extends View { 

float x; 
float y; 
float r; 

public Draw2D(Context context, float x, float y, float r) { 
    super(context); 

    this.x = x; 
    this.y = y; 
    this.r = r; 
} 

@Override 
protected void onDraw(Canvas c) { 
    super.onDraw(c); 

    Paint paint = new Paint(); 
    paint.setStyle(Paint.Style.FILL); 

    paint.setColor(Color.WHITE); 
    c.drawPaint(paint); 

    paint.setAntiAlias(true); 
    paint.setColor(Color.BLUE);  
    c.drawCircle(x, y, r, paint); 
} 
} 

Это мой последний тест. Почему теперь кружок движется? Это совсем не движется.

ответ

4

Вы делаете что-то вроде canvas.drawColor (Color.TRANSPARENT) или canvas.drawColor (Color.BLACK) в начале вашего метода doDraw?

Если вы опустите этот звонок, он не должен очищать полотно и оставлять следы, которые вы ищете.

+0

Я не использую это. То, что я делаю, рисует пустую белую растровую карту на холсте, а затем пытается нарисовать круг. – linuxer

+0

Я делаю рисунок в onDraw, должен ли я рисовать где-то еще? – linuxer

+1

, если вы разместили какой-то образец кода, было бы немного легче увидеть, но если вы рисуете белый растровый рисунок на каждом призыве «нарисовать», то это стирает ваш круг. Вам нужно будет либо сохранить все locs для вашего круга, и нарисовать их каждый запрос, либо просто покрасить фон с самого начала, а затем нарисовать затем новое окружение на каждом вызове для рисования. – broschb

Смежные вопросы