我正在尝试使用透明画布和surfaceView开发游戏,
我创建了一个屏幕大小的离屏位图(myCanvasBitmap)。
每次我为该位图创建一个新的Canvas。
问题在于,如果我画“快”(快速移动手指),线条不一致 - 圆形位图彼此相距太远。 但是当我绘制“慢”时,圆形位图很接近。
快速: (OOOOO O__O______O_____________O_______________________ O)
慢:(000OOOOOOOOOOOOOOOOOOOOOOOO0000OO) OOOOOOOOOO)
我在这里阅读了一些帖子并意识到我应该以某种方式使用“drawPath”(能够完成并绘制2个位置之间的所有点,但问题是“drawPath”适用于我没有的油漆(我使用位图画笔。)
有谁知道如何添加路径代码以使用我的SurfaceView程序并解决这个破解问题?
public class SurfaceMyPaint extends SurfaceView implements Runnable
{
Thread t;
SurfaceHolder holder;
Bitmap brush,myCanvasBitmap;
boolean isItOk = false;
public SurfaceMyPaint(Context context)
{
super(context);
holder = getHolder();
initial();
}
public void initial()
{
brush= BitmapFactory.decodeResource(getResources(), R.drawable.brush2);
}
public boolean onTouchEvent(MotionEvent event)
{
if(event.getAction()== MotionEvent.ACTION_DOWN)
{
x= event.getX();
y= event.getY();
}
if(event.getAction()== MotionEvent.ACTION_MOVE)
{
x = event.getX();
y= event.getY();
}
return true;
}
public void run()
{
while (isItOk == true)
{
if (!holder.getSurface().isValid())
continue;
myCanvas_w = getWidth();
myCanvas_h = getHeight();
if (myCanvasBitmap== null)
{myCanvasBitmap= Bitmap.createBitmap(myCanvas_w, myCanvas_h, Bitmap.Config.ARGB_8888);}
Canvas c = new Canvas(myCanvasBitmap);
canvas = holder.lockCanvas(null);
c.drawBitmap(brush, x - (brush.getWidth() / 2), y - (brush.getWidth() / 2), null);
canvas.drawBitmap(myCanvasBitmap, 0, 0, null);
holder.unlockCanvasAndPost(canvas);
}
}}