c# - 向我在代码 c# wpf 中创建的椭圆添加动画
问题描述
我在代码中创建了多个椭圆并添加了 MouseEnter 和 Leave 事件。我的问题是,当我用光标进入椭圆时,它会改变整个窗口的不透明度,而不仅仅是那个椭圆。
在这里,我创建了椭圆:
for (int i = 0; i < L2.Count; i++)
{
Ellipse myEllipse = new Ellipse();
myEllipse.Opacity = .5;
myEllipse.MouseEnter += MyEllipse_MouseEnter;
myEllipse.MouseLeave += MyEllipse_MouseLeave;
users_profiles.Children.Add(myEllipse);
}
和事件:
private void MyEllipse_MouseLeave(object sender, MouseEventArgs e)
{
DoubleAnimation open_an = new DoubleAnimation();
open_an.From = 1;
open_an.To = .5;
open_an.Duration = TimeSpan.FromSeconds(.3);
BeginAnimation(OpacityProperty, open_an); // this.BeginAnimation(...) has the same result.
}
解决方案
它改变了整个窗口的不透明度
显然,因为您调用BeginAnimation
了 MainWindow 实例。
从 sender 参数中获取 Ellipse:
private void MyEllipse_MouseLeave(object sender, MouseEventArgs e)
{
var ellipse = (Ellipse)sender;
var open_an = new DoubleAnimation
{
From = 1,
To = .5,
Duration = TimeSpan.FromSeconds(.3)
};
ellipse.BeginAnimation(UIElement.OpacityProperty, open_an);
}
推荐阅读
- java - Neo4j 升级到 4.0.6:在应用程序服务器中部署时无法链接 org/neo4j/cypher/internal/v4_0/parser/Expressions (Wildfly 18)
- makefile - Makefile 丢失配置
- c++ - 如果我输入aaa,如何循环回到开始?
- azure-active-directory - Microsoft Identity Web - 如何获取用户登录事件?
- docker - ubuntu 容器安装 rvm 失败
- javascript - jquery click-function 在页面加载时执行,但在单击时不执行
- python - 在python数据框中选择最近的日期一个月的第一天
- reactjs - 根据 React 中的值范围具有不同颜色的垂直条形字符
- c# - 在 Blazor 中使用按钮向左/向右滚动
- android - 为什么 Flutter DevTools 时间线显示最基本的应用程序的帧峰值?