相关疑难解决方法(0)

如何在Android中使用泛洪填充算法?

我是Android编程的新手,最近我尝试编写一个简单的应用程序,仅用于练习!在这一个中,我想在用户的点击上为图像着色,但我不知道如何启动它.我已经阅读了不同的主题,说使用"Flood Fill"算法.我在网上发现了它,但我不知道如何将它放入我的简单应用程序中.

我发现的代码:

private void FloodFill(Bitmap bmp, Point pt, int targetColor, int replacementColor) 
{
   Queue<Point> q = new LinkedList<Point>();
   q.add(pt);
   while (q.size() > 0) {
       Point n = q.poll();
       if (bmp.getPixel(n.x, n.y) != targetColor)
           continue;

    Point w = n, e = new Point(n.x + 1, n.y);

    while ((w.x > 0) && (bmp.getPixel(w.x, w.y) == targetColor)) {
        bmp.setPixel(w.x, w.y, replacementColor);
        if ((w.y > 0) && (bmp.getPixel(w.x, w.y - 1) == targetColor))
            q.add(new Point(w.x, w.y - 1));
        if ((w.y < bmp.getHeight() - …
Run Code Online (Sandbox Code Playgroud)

java android

12
推荐指数
2
解决办法
1万
查看次数

Android泛洪填充算法

有谁知道一个迭代和有效的洪水填充算法?

或者有没有办法实现递归floodfill算法没有堆栈溢出错误?

尝试使用堆栈的 @ Flood填充, 但我无法找到一种方法来处理白色和黑色图像.

java android image-processing flood-fill

11
推荐指数
4
解决办法
2万
查看次数

Android FingerPaint Undo/Redo实现

我正在开发一个测试项目,类似于FingerPaintAndroid SDK演示中的示例.我试图在我的项目中实现撤消/重做功能,但我尝试的东西并没有像我期望的那样工作.我在互联网和这里找到了一些与此类似的问题,但是他们没有帮助我,这就是我问一个新问题的原因.

以下是我正在做的事情:

    public class MyView extends View {

    //private static final float MINP = 0.25f;
    //private static final float MAXP = 0.75f;



    private Path    mPath;
    private Paint   mBitmapPaint;

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

        mPath = new Path();
        mBitmapPaint = new Paint(Paint.DITHER_FLAG);

    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);

        mCanvas = new Canvas(mBitmap);
        mCanvas.drawColor(Color.WHITE);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawColor(Color.WHITE);
        canvas.drawBitmap(mBitmap, …
Run Code Online (Sandbox Code Playgroud)

android paint android-view

8
推荐指数
1
解决办法
9982
查看次数

Android:如何只为图像的特定部分填充颜色?

我有像这样的图像:

在此输入图像描述 现在,我想将颜色填充到该图像的特定部分.如果我选择蓝色,如果我触摸Cap,那么帽子应该填充蓝色.同样的事情也应该发生在鼻子,嘴巴,眼睛等其他部位

那么,如何才能使用android?

任何budy都可以帮助我.

更新

我已尝试在我的应用中实施FloodFill算法.看这里

但在这之后我得到了例外:

    03-09 17:45:16.260: ERROR/AndroidRuntime(2558): java.lang.IllegalStateException
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at android.graphics.Bitmap.setPixel(Bitmap.java:847)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at com.project.fingerpaint.FinderPaintDemo.FloodFill(FinderPaintDemo.java:284)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at com.project.fingerpaint.FinderPaintDemo.access$3(FinderPaintDemo.java:272)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at com.project.fingerpaint.FinderPaintDemo$MyView.onTouchEvent(FinderPaintDemo.java:187)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at android.view.View.dispatchTouchEvent(View.java:3766)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1671)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at android.app.Activity.dispatchTouchEvent(Activity.java:2086)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558): …
Run Code Online (Sandbox Code Playgroud)

android paint draw android-canvas

6
推荐指数
2
解决办法
2万
查看次数

Android绘图填充工具

我正在为Android制作一个绘图应用程序,我需要一些帮助添加填充工具.

我希望该工具能够填充填充,并且在Microsoft Paint中表现得像在手机上一样.

我有一个自定义视图,在画布上绘制路径.我为不同的笔和画笔绘制了不同的路径,我允许用户选择线条粗细和颜色.

当我做:

paint.setStyle(Paint.Style.FILL);
Run Code Online (Sandbox Code Playgroud)

而且我画画,我没有得到我想要的填充.

我已经得到了一些使用"Flood Fill Algorithm"的建议,但我无法弄清楚如何在我的代码中实现它.

我在哪里可以看到我想要做的一个例子?有没有人有示例代码向我展示如何使用我的android视图使该工具工作?

编辑:

CartoonView.java:

    public class CartoonView extends View {
        ArrayList<Paint> paints = new ArrayList<Paint>();
        ArrayList<Path> paths = new ArrayList<Path>();
        int color;
        int thickness;
        boolean pencilSelected;

    public boolean isPencilSelected() {
        return pencilSelected;
    }

    public void setPencilSelected(boolean pencilSelected) {
        this.pencilSelected = pencilSelected;
    }

    public ArrayList<Paint> getPaints() {
        return paints;
    }

    public void setPaints(ArrayList<Paint> paints) {
        this.paints = paints;
    }

    public ArrayList<Path> getPaths() {
        return paths;
    }

    public void setPaths(ArrayList<Path> paths) {
        this.paths …
Run Code Online (Sandbox Code Playgroud)

android android-canvas android-view

6
推荐指数
1
解决办法
2448
查看次数

填充整个画布,但保持边界填充区域像圆形、矩形一样

可能重复

你好朋友,

我创建油漆应用程序,我有问题。如果我绘制没有填充或其他类似边界区域的矩形并更改背景颜色,则矩形填充区域也会更改,这意味着整个画布颜色将填充新的背景颜色。如何保留背景或填充未绑定的画布区域,这是图像

这是初始图像

在此处输入图片说明

更改背景颜色后得到这个结果

在此处输入图片说明

但如何变得像这样

在此处输入图片说明

android android-canvas

5
推荐指数
1
解决办法
4278
查看次数

如何撤消/重做最后一次触摸动作

我有一个正在处理的图像,我有两个按钮,撤消和重做.如果单击这两个按钮中的任何一个,我需要代码撤消/重做上一个触摸操作.我知道我必须使用堆栈.我该如何实施呢?

android undo-redo

2
推荐指数
1
解决办法
3937
查看次数