안드로이드 개발 질문/답변
(글 수 45,052)
class MyView extends View
{
Paint mpaint;
Bitmap bitmap;
Canvas canvas;
//Paint bitmapPaint;
ArrayList<Vertex> arVertex;
public MyView(Context context)
{
super(context);
arVertex = new ArrayList<Vertex>();
mpaint = new Paint();
mpaint.setColor(Color.BLACK);
mpaint.setStrokeWidth(5.0f);
mpaint.setAntiAlias(true);
bitmap = Bitmap.createBitmap(320,480,Bitmap.Config.ARGB_8888);
canvas = new Canvas(bitmap);
// bitmapPaint = new Paint(Paint.DITHER_FLAG);
}
public void changeColor(int color)
{
switch(color)
{
case 1:
mpaint.setColor(Color.BLACK);
break;
case 2:
mpaint.setColor(Color.RED);
break;
case 3:
mpaint.setColor(Color.BLUE);
break;
case 4:
mpaint.setColor(Color.YELLOW);
break;
case 5:
mpaint.setColor(Color.GREEN);
break;
case 6:
mpaint.setColor(Color.WHITE); //캔버스가 흰색이기 때문에 흰색 팬으로 덮음
break;
}
}
@Override
protected void onDraw(Canvas canvas)
{
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(bitmap, 0,0, mpaint);
for(int i=0; i<arVertex.size(); i++)
{
if(arVertex.get(i).draw)
{
canvas.drawLine(arVertex.get(i-1).x,
arVertex.get(i-1).y,
arVertex.get(i).x,
arVertex.get(i).y,
mpaint);
}
}
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
// TODO Auto-generated method stub
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
arVertex.add(new Vertex(event.getX(), event.getY(), false));
return true;
//break;
case MotionEvent.ACTION_MOVE:
arVertex.add(new Vertex(event.getX(), event.getY(), true));
invalidate();
return true;
}
return false;
}
public class Vertex
{
float x;
float y;
boolean draw;
Vertex(float _x, float _y, boolean _d)
{
this.x = _x;
this.y = _y;
this.draw = _d;
}
}
}
이렇게 기본 소스가 있습니다. 이 소스에 팬 색 변경과 저장 기능을 넣을려고 하는데요.
위처럼 changeColor메소드를 하나 만들어서 해봤는데 색은 변경 되는데 문제는 그전에 그려졌던 선까지 같이 색이 바뀝니다....
왜 그런건가요 ㅠㅠ
그리고 화면 지우기 기능을 하고 싶은데요 bitmap 하나 만들어서 덮어씌우면 되나요?
또한 저장기능을 할려면 위에 선언한 비트맵을 그대로 저장하면 되나요??



