XAML WPF控件的动态克隆和属性更改

vzgqcmou  于 2023-02-01  发布在  其他
关注(0)|答案(2)|浏览(160)

总结

我不知道如何准确地生成同一控件的多个示例,然后对它们应用动画。Here's是我试图实现的一个示例(观察单击效果)

当前方法

我有两个"预定义"控件(TextLabel和Rectangle),分别用于"+1"文本和图像,单击时,我将它们的位置设置为鼠标并开始动画,然后动画相对于光标位置向某个方向移动,然后淡出(如gif中所示)
这是一个很好的、实用的方法,但仍有一些不足之处:* * 如何使多个这样的对同时显示和动画?**

我的问题

这并不是微不足道的。克隆控件,然后将相同的动画应用到它们作为"原始的、虚拟的"控件会导致Z排序问题和情节串联图板之间的冲突。这种"克隆"方法看起来也非常幼稚和低效。

所以...

如何复制美妙的,cookie点击效果与文本和小cookie图像反弹从光标...与一个以上的"对"这些效果一次?谢谢提前。

v1uwarro

v1uwarro1#

我只需要用粒子一次性生成一个图像,你创建两个图像的示例,然后反向旋转它们,当然,图像在没有粒子的地方是透明的,饼干图像可以通过一个简单的动画放在上面。

wpx232ag

wpx232ag2#

这个问题已经通过在整个Window上叠加一个不可命中的Canvas控件和一个透明的Background得到了解决。
窗口.xaml,伪代码

<Window>
    <Grid>
        <Canvas IsHitTestVisible="False"/>
        <(Rest of content)/>
    </Grid>
</Window>

接下来就是存储所有活动的动画cookie并绘制它们。
窗口. xaml.cs,伪代码

internal class CookieCanvas : Canvas {
   
   private Vector2[] _cookiePositions;
   
   protected override void OnRender(DrawingContext drawingContext) {
      foreach(var cookiePosition in _cookiePositions)
      {
          drawingContext.DrawImage(someCachedCookieImage, 
              new Rect(cookiePosition.X, cookiePosition.Y, img.PixelWidth, img.PixelHeight)
          );
      }
      
   }
}

相关问题