2011-12-29 55 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值!惹这一点,你就可以改变你的行程如何透明的:)