Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 像路径一样绘制.png图像_Android_Graphics_Draw_Paint_Imagebrush - Fatal编程技术网

Android 像路径一样绘制.png图像

Android 像路径一样绘制.png图像,android,graphics,draw,paint,imagebrush,Android,Graphics,Draw,Paint,Imagebrush,因此,我有一个PNG文件,我在我的应用程序中用作自定义笔刷。当一个运动事件发生时,我不断地重画它以产生画笔效果。但是,如果我拖得太快,我会错过像素,一些画笔看起来非常糟糕——就像图像只是画在彼此上面一样 我有没有办法用drawpath模式来代替它 下面的代码是我的onDraw方法。mbitmapBrush变量具有PNG图像文件,pos.a和pos.b是当前运动事件的“x”和“y”坐标 @Override protected void onDraw(Canvas canvas) {

因此,我有一个PNG文件,我在我的应用程序中用作自定义笔刷。当一个运动事件发生时,我不断地重画它以产生画笔效果。但是,如果我拖得太快,我会错过像素,一些画笔看起来非常糟糕——就像图像只是画在彼此上面一样

我有没有办法用
drawpath
模式来代替它

下面的代码是我的
onDraw
方法。
mbitmapBrush
变量具有PNG图像文件,
pos.a
pos.b
是当前运动事件的“x”和“y”坐标

 @Override
    protected void onDraw(Canvas canvas) {
        Paint paint=mPaint;
        canvas.drawColor(0xFFAAAAAA);
mCM.set(new float[]{1f, 1f, 1f, 0f, 1f,
    0f, 1f, 3f, 0f, 4f,
    1f, 4f, 1f, 1f, 0f,
    1f, 0f, 0f, 1f, 0f });
ColorMatrixColorFilter cm3=new ColorMatrixColorFilter(mCM);

paint.setColorFilter(cm3);

        canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
        for (Vector2 pos : mPositions) {

            canvas.drawBitmap(mBitmapBrush, pos.a, pos.b, paint);
            //canvas.drawCircle(pos.a, pos.b, 7, mPaint);
        }

        //canvas.drawBitmap(mBitmapBrush, clickX, clickY, null);
        //canvas.drawPath(mPath, mPaint);

    invalidate();
    }

您是否考虑过使用自定义的
SurfaceView
并从循环中手动调用
draw()
方法?这样,您就可以更好地控制它的绘制速率。是的,尝试这样做,使用
getHistoricalX
gethistorical
也将有助于创建更多的绘制点。在什么条件下我可以运行循环以使其绘制更多点?如果每次调用
onTouch()
时都更新位置,那么您已经获得了可能的最佳时间分辨率。我会创建一个线程,并有一个while循环来调用
mySurface.draw()
,然后每次循环都会休眠20毫秒。或者,每次调用
onTouch()
时,您也可以调用
draw()
。嘿,我是图形API的新手,我手动调用了该方法,工作更流畅,但不是在曲面视图中。你能给我一个小的代码片段,仅仅是一些展示surfaceview工作的东西吗。感谢这将有助于您掌握如何扩展
SurfaceView