WPF 实现弹出透明窗口效果!

kakaniuren 2011-09-09 10:05:17
口口口口口口口口口口口口口

在一个窗体中,我有如上的这么若干并排的TextBlock。现需要实现如下效果:

当鼠标靠近一个TextBlock,弹出一个半透明的窗口,里面显示一些相关信息。当鼠标离开即关闭该窗口。窗口弹出的位置在鼠标附近、弹出窗口的效果最后有淡入淡出的效果。希望提供些思路或实例,谢谢!
...全文
1050 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhushoudongzhu 2011-10-27
  • 打赏
  • 举报
回复
有没有个例子的,想做 窗体弹出的效果,比如说从左到右移动啊 从右到左移动啊
fallincloud 2011-09-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 leeyear2005 的回复:]

但是 若是做成模板或样式以便复用的话

呃 好像ToolTip还真不好做
[/Quote]
可以把这种ToolTip做成个Style,然后设置Control的ToolTip的Style为此Style就行了(其实最好别用Control,用稍微Detail的控件,比如TextBlock,Button等控件一一指定其ToolTip的Style可能更好维护)
Angus9 2011-09-15
  • 打赏
  • 举报
回复
但是 若是做成模板或样式以便复用的话

呃 好像ToolTip还真不好做
Angus9 2011-09-15
  • 打赏
  • 举报
回复
确实 若是弹出的东西仅仅是说明性而无需操作的话 楼上两位的 思路就可以了
heren5201314 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fallincloud 的回复:]
正如3楼所说的,自己写Timer有点不合适,
但3楼所说的还是太复杂了。
我的思路如下:

弹出的信息实际上是ToolTip,WPF可以自定义ToolTip的Style,示例代码如下:

XML code

<TextBox>
<TextBox.ToolTip>
<ToolTip Placement="Bottom"
……
[/Quote]
支持,直接用ToolTip就行,样式自己定义!一样能实现效果!
Angus9 2011-09-09
  • 打赏
  • 举报
回复
嗯 然后你需要的窗口都继承于 BaseWindow就可以咯
Angus9 2011-09-09
  • 打赏
  • 举报
回复
楼上说的不错 不过不建议用 timer 最好用动画 还有 一定要窗口么?其实个人觉得像你所描述 用Popup来装你的内容更好

当然,你想用窗口也可以,不多说 直接上我正在使用的代码:
写一个基类,BaseWindow:Window

show方法不需要重写

void BaseWindow_Loaded(object sender, RoutedEventArgs e)
{
ScaleTransform st = new ScaleTransform(1, 1);
DoubleAnimation cartoonClear = new DoubleAnimation(0.5, 1, new Duration(TimeSpan.FromMilliseconds(90)));
this.RenderTransform = st;
st.BeginAnimation(ScaleTransform.ScaleYProperty, cartoonClear);
st.BeginAnimation(ScaleTransform.ScaleXProperty, cartoonClear);
}


关闭 :
/// <summary>
/// 动画关闭
/// </summary>
public new void Close()
{
ScaleTransform st = new ScaleTransform(1, 1);
DoubleAnimation cartoonClear = new DoubleAnimation(1, 0.5, new Duration(TimeSpan.FromMilliseconds(90)));
this.RenderTransform = st;
cartoonClear.Completed += (c, com) =>
{
base.Close();
};
st.BeginAnimation(ScaleTransform.ScaleYProperty, cartoonClear);
st.BeginAnimation(ScaleTransform.ScaleXProperty, cartoonClear);
}


所有里面的动画参数,你可以根据你自己的需要改变,希望能帮到你
assky124 2011-09-09
  • 打赏
  • 举报
回复
这个很难么?
假设你的半透窗口为 FormOpacity

重写Show() Hide() ,定义一个Timer 改变透明度

TextBlock MouseOn 的时候调用Show(),MouseLeave 调用Hide()

WPF应该可以用Blend设计动画的,效果应该更好点
fallincloud 2011-09-09
  • 打赏
  • 举报
回复
正如3楼所说的,自己写Timer有点不合适,
但3楼所说的还是太复杂了。
我的思路如下:

弹出的信息实际上是ToolTip,WPF可以自定义ToolTip的Style,示例代码如下:
<TextBox>
<TextBox.ToolTip>
<ToolTip Placement="Bottom"
Content="Some ToolTip Content">
<ToolTip.Triggers>
<EventTrigger RoutedEvent="ToolTip.Opened">
<BeginStoryboard>
<Storyboard TargetProperty="Opacity">
<DoubleAnimation From="0.0" To="1.0" Duration="0:0:2" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</ToolTip.Triggers>
</ToolTip>
</TextBox.ToolTip>
</TextBox>
sunwukong 2011-09-09
  • 打赏
  • 举报
回复
用动画更新透明度就行。

8,756

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧