首页 > 解决方案 > 使用自定义颜色而不是纯色排队线性填充填充

问题描述

目前我正在为孩子们开发着色书。现在我已经成功应用队列线性洪水填充来制作“触摸填充”功能。但就目前而言,填充颜色是纯色。有什么办法可以让我像这个应用程序一样用来自 png 的自定义颜色填充颜色吗?

示例图像

这是我的 View 类构造函数:

        public MyView(Context context) {
        super(context);

        paint = new Paint();
        paint.setAntiAlias(true);
        pd = new ProgressDialog(context);
        paint.setStyle(Paint.Style.FILL);
        paint.setStrokeJoin(Paint.Join.ROUND);
        paint.setStrokeWidth(5f);
        paint.setColor(Color.RED);
        mBitmap = BitmapFactory.decodeResource(getResources(),
                R.drawable.cartoon).copy(Bitmap.Config.ARGB_8888, true);

        this.path = new Path();
    }   

绘制:

        @Override
    protected void onDraw(Canvas canvas) {
        this.canvas = canvas;
        canvas.drawBitmap(mBitmap, 0, 0, paint);
    }

触摸事件:

        @Override
    public boolean onTouchEvent(MotionEvent event) {
        float x = event.getX();
        float y = event.getY();
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:

                p1.x = (int) x;
                p1.y = (int) y;
                final int sourceColor = mBitmap.getPixel((int) x, (int) y);
                final int targetColor = paint.getColor();
                new TheTask(mBitmap, p1, sourceColor, targetColor).execute();
                invalidate();
        }
        return true;
    }

对于我的 QueueLinearFloodFiller 类,我使用此答案中的代码: https ://stackoverflow.com/a/16968484/13560859

任何帮助将不胜感激,谢谢!

标签: javaandroidcanvasgraphics

解决方案


推荐阅读