wpf 中inkcanvas画板中ink模式下,画笔画出的线,怎么加上动画,最好是画完一笔后才开始动画,这个效果怎么实现呢?动画效果就是透明度有1变为0,高手指教一下吧。

解决方案 »

  1.   

    在StrokeCollected的事件中加个定时器修改Stroke的Color的Alpha值。using System.Threading;    private Dictionary<Stroke, Timer> dicTimer = new Dictionary<Stroke, Timer>();    private void InkCanvas_StrokeCollected(object sender, InkCanvasStrokeCollectedEventArgs e)
            {
                Timer t1= new Timer(new TimerCallback(ChangeOpacity), e.Stroke, 100, 100);
                dicTimer.Add(e.Stroke, t1);
            }        private void ChangeOpacity(Object obj)
            {
                    Stroke line = obj as Stroke;
                    Color linecolor = line.DrawingAttributes.Color;
                    if (linecolor.ScA > 0)
                        linecolor.ScA -= 0.1f;
                    this.Dispatcher.BeginInvoke(new Action(() => { line.DrawingAttributes.Color = linecolor; }));
                    if (linecolor.A <= 0)
                    {
                        dicTimer[line].Dispose();
                        dicTimer.Remove(line);
                    }   
            }