2011-12-21 80 views
1

我想在我的應用程序中使用一個動畫緩慢地繪製圖像-2就像人類正在使用鉛筆一樣。提前致謝!繪製圖像,就像一個人正在使用鉛筆

+2

你試過了什麼? – 2011-12-21 07:34:51

+0

你好尼克...我正在使用動畫來顯示圖像。這是一個alpha動畫,但我需要一個動畫,從x = 0到y =結束繪製圖像 – 2011-12-21 07:39:31

+0

它應該使用鉛筆素描 – 2011-12-21 07:40:25

回答

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;//設置線的外觀應該看起來像

然後你開始一個睡眠50毫秒的動畫線程,並且每次喚醒時它都會畫出更多的p從你的圖紙中得到的oint像這樣..

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(); 
+0

感謝您的時間dredel,但你能告訴我我可以如何動畫草圖像 – 2011-12-21 07:49:12

+0

我更詳細地編輯我的答案。你應該擁有一切你需要從這裏弄清楚的地方。 – 2011-12-21 15:03:59

0

你需要用點列表製作某種形式的路徑,然後將「鉛筆」從第一個移動到最後一個。 閱讀關於java中的鏈表,這很容易,一切都將清晰。唯一的問題是制定道路。您可能需要在電腦上編寫一些工具將圖像轉換爲路徑。 實現這種效果的另一種方法,但有點大膽,是在圖片邊緣挑選隨機點,對它們進行排序,然後將鉛筆從頭到尾移動。

+0

謝謝alfa可能會發生...但我是Android新手,所以對我來說這是不可能的,但無論如何感謝您的時間 – 2011-12-21 07:43:29