2011-12-29 95 views
0

我對這個論壇完全陌生,並且仍然是WPF的初學者。如何使筆畫在InkCanvas上消失

我正在研究一個需要動畫的inkcanvas上的筆畫的項目。其中一個動畫是「消失」。我想通過單擊按鈕使所選筆畫逐漸消失,但出現在動畫的結尾。

由於中風沒有不透明屬性,我嘗試使用ColorAnimation類和故事板。我沒有使這個代碼工作,因爲我不能使用自己或使用他們的名字來定位筆畫,因爲他們沒有任何筆畫。

現在我想用筆畫顏色逐漸變化爲背景的顏色運用該系統,並在結束時,重置回其初始值。這是一個昂貴的循環,但我沒有其他想法。

如果您有任何其他解決方案可能與我分享,我將不勝感激。

在此先感謝。

編輯:我沒有回答評論,因爲我正在處理同一項目的其他部分。

我已經使用存儲在的DrawingAttributes阿爾法值試過,但因爲它不是一個變量我不能改變該值。 RGB值也是一樣。我不知道如何使筆畫在循環中消失。我已經實施了大部分的項目,所以我只需要一些東西,讓它們慢慢消失。下面你可以找到一個例子,我改變筆畫本身的動畫。

private int dropOffset = 1; 
    private void DropAnimation() 
    { 
     m = new Matrix(); 
     m.Translate(0, dropOffset); 

     animStrokes.Transform(m, false); 
     YChange += dropOffset; 
     dropOffset += 2; 
    } 

而在另一個類,我有

public void AnimateStrokes(Dispatcher canvasDispatch) 
    { 
     Stopwatch initial = Stopwatch.StartNew(); 
     while (initial.ElapsedMilliseconds < 2000) 
     { 
      foreach (Animation ai in AnimationList) 
      { 
       ai.animateSelected(); 
      } 
      canvasDispatch.Invoke(new Action(() => { }), DispatcherPriority.Render); 
      Thread.Sleep(50); 
     } 
     foreach (Animation a in AnimationList) 
     { 
      a.undoAnimation(); 
     } 
     canvasDispatch.Invoke(new Action(() => { }), DispatcherPriority.Render); 
    } 

我知道,這不是健康的傳球調度員這樣,但它滿足了。

再次提前致謝。

+0

請發表您的代碼 – Paparazzi 2011-12-29 14:59:18

+0

您可以編輯筆觸顏色的Alpha值,但你還是會通過他們必須循環。你說這是一個昂貴的循環,但是你有沒有基準測試或者你認爲它太慢? – keyboardP 2011-12-29 15:15:30

回答

0
InkCanvas1.DefaultDrawingAttributes.Color = Color.FromArgb(100, 0, 255, 255); 

可能會有點遲,但對他人的幫助不會少! 100是基本上就像一個不透明值的alpha值!惹這一點,你就可以改變你的行程如何透明的:)