绘制图像,像人类正在使用铅笔

时间:2011-12-21 07:32:41

标签: android

我想在我的应用程序中使用动画来慢慢地绘制图像 - 就像人类正在使用铅笔一样。在此先感谢!

2 个答案:

答案 0 :(得分:2)

如果你有一个代表这种绘图的点数组,只需在画布上画一条线,然后在动画线程中逐一添加这些点。

我喜欢为比线条宽度更接近的点绘制圆圈(它看起来不那么锯齿状)......

这样的事情:

for (Point pB : points) {
        if(pB == null){
            pA = null;
            continue;
        }
        double dist = getDistance(pA,pB);

        if(pA != null && dist > lineWidth){ 
            canvas.drawCircle(pB.x, pB.y, (float)lineWidth, paint);
            canvas.drawLine(pA.x, pA.y, pB.x, pB.y, paint);
        }
        else
            canvas.drawCircle(pB.x, pB.y, (float)lineWidth, paint);

        pA = pB;            
        // //Log.d(TAG, "Painting: "+point);
    }

点将是Point的临时列表,您将继续从代表整个绘图的主列表中添加。

编辑:

所以,你有一个点数组就是你的整个绘图

Point [] myDrawing{a,b,c,d,e,f.........};

和定义线

的Paint

Paint paint = new Paint(); //设置线条应该是什么样的所有值

然后你开始一个睡眠时间为50毫秒的动画线程,每当它醒来时,它会从你的绘图中再抽出一点像这样......

Thread draw = new Thread(){
    public void run(){
       int curPoint = 0;
       while(curPoint < myDrawing.length){
          //call the drawing loop I defined above but modify it to only use points 0 - curPoint
        drawPointsZeroThroughCurPoint(curPoint);
        ++curPoint;
        sleep(50);
       }
}

    }

};

draw.start();

答案 1 :(得分:0)

您需要使用点列表制作某种形式的路径,然后将“铅笔”从第一个移到最后一个。 阅读java中的链表,这很简单,一切都很清楚。唯一的问题是制作路径。您可能需要在PC中编写一些工具才能将图像转换为路径。 实现这种效果的另一种方法,但有点大胆,是在图片的边缘选择随机点,对它们进行排序,然后从开始到结束移动铅笔。