wpf仿QQ之窗体翻转

很久以前在网上找过窗体翻转的Demo,但看得不是很明白,大多是内容的翻转,研究了下,现在分享给大家。

 利用UIElement.RenderTransform 属性就能实现元素的呈现位置的转换,因此只需改变window的RenderTransform属性就可以达到想要的效果。

//关键代码
<Window.RenderTransform>
        <ScaleTransform x:Name="WindowTransform"></ScaleTransform>
 </Window.RenderTransform>
//动画
<Storyboard x:Key="TransformToMiddle">
            <DoubleAnimation Storyboard.TargetName="WindowTransform" Storyboard.TargetProperty="ScaleX" From="1" To="-1" By="1" Duration="0:0:1" />
</Storyboard>

后台调用动画

Storyboard sbto = Application.Current.Resources["TransformToMiddle"] as Storyboard;
sbto.Brgin(this);

 

如何使用 ScaleTransform 水平或垂直翻转 UIElement(查阅MSDN)

下图显示要翻转的按钮。

<Button Content="Flip me!" Padding="5">
</Button>

若要水平翻转按钮,请创建一个 ScaleTransform 并将它的 ScaleX 属性设置为 -1。 将 ScaleTransform 应用于按钮的 RenderTransform 属性。

<Button Content="Flip me!" Padding="5">
  <Button.RenderTransform>
    <ScaleTransform ScaleX="-1" />
  </Button.RenderTransform>
</Button>

效果图

若要原地翻转按钮,需要将 ScaleTransform 应用于按钮的中心,而不是角。 将 ScaleTransform 应用于按钮中心的一个简便方法是将按钮的 RenderTransformOrigin 属性设置为 0.5, 0.5。

<Button Content="Flip me!" Padding="5"
  RenderTransformOrigin="0.5,0.5">
  <Button.RenderTransform>
    <ScaleTransform ScaleX="-1" />
  </Button.RenderTransform>
</Button>

由于我的程序里包含太多其它东西,程序就不上传了

转载于:https://www.cnblogs.com/liuxiaobo93/p/3895466.html

WPF仿QQ贴边自动隐藏功能主要是通过设置窗口的动画效果来实现的。首先,需要监听窗口的位置变化事件,当窗口靠近屏幕边缘时,触发隐藏动画效果。其次,可以使用WPF自带的动画库,如DoubleAnimation、Storyboard等,来定义窗口隐藏时的动画效果。在动画完成后,将窗口的Visibility属性设置为Collapsed来实现窗口的隐藏。 下面是实现这一功能的一段简单源码示例: ```csharp private void Window_LocationChanged(object sender, EventArgs e) { double screenWidth = SystemParameters.PrimaryScreenWidth; double screenHeight = SystemParameters.PrimaryScreenHeight; double pixelsFromTop = this.Top; double pixelsFromBottom = screenHeight - this.Top - this.ActualHeight; double pixelsFromLeft = this.Left; double pixelsFromRight = screenWidth - this.Left - this.ActualWidth; double boundary = 10; // 靠边触发隐藏的距离阈值 if (pixelsFromTop < boundary || pixelsFromBottom < boundary || pixelsFromLeft < boundary || pixelsFromRight < boundary) { // 如果靠近边缘,执行隐藏动画 DoubleAnimation animation = new DoubleAnimation(1, 0, new Duration(TimeSpan.FromSeconds(0.5))); this.BeginAnimation(UIElement.OpacityProperty, animation); } else { // 如果不靠近边缘,取消隐藏动画 DoubleAnimation animation = new DoubleAnimation(0, 1, new Duration(TimeSpan.FromSeconds(0.5))); this.BeginAnimation(UIElement.OpacityProperty, animation); } } ``` 这段代码中,通过监听窗口的LocationChanged事件,计算窗口与屏幕边缘的距离,并根据一定的阈值来触发隐藏动画效果。当窗口靠近边缘时,执行隐藏动画,动画完成后将窗口的Opacity属性设置为0,实现窗口的隐藏。当窗口远离边缘时,取消隐藏动画,并将窗口的Opacity属性设置为1,使窗口重新显示出来。通过这种方式,就可以实现仿QQ贴边自动隐藏的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值