wpf windows 放大缩小 疑问??

本文探讨了在WPF中实现窗体旋转、放大和缩小效果的方法,通过详细解析代码,揭示了如何仅使窗体内容部分发生旋转变化,而窗口标题栏和按钮等元素不受影响。同时,讨论了不使用`WindowStyle`属性时的效果变化,以及如何通过`Storyboard`和`Transform`来动态调整窗口外观。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

某一天,有位兄弟问起,怎么在wpf 中做窗体的旋转放大,缩小的效果,当自己写了如下代码后,才发觉,很是怪异。。

 

<Window x:Class="WpfWindowTransform.Window2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window2" Height="300" Width="300"  x:Name="Windows2" Background="Yellow" RenderTransformOrigin="0.5,0.5"
        WindowStartupLocation="CenterScreen"  ResizeMode="NoResize" ShowInTaskbar="False">
    <Window.RenderTransform>
        <TransformGroup>
            <ScaleTransform ScaleX="1" ScaleY="1"/>
            <SkewTransform AngleX="0" AngleY="0"/>
            <RotateTransform Angle="0"/>
            <TranslateTransform X="0" Y="0"/>
        </TransformGroup>
    </Window.RenderTransform>
    <Window.Resources>
        <Storyboard x:Key="ScaleXStoryboard">
            <DoubleAnimationUsingKeyFrames RepeatBehavior="Forever" BeginTime="00:00:00" Storyboard.TargetName="Windows2" 
                                                   Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">
                <SplineDoubleKeyFrame KeyTime="00:00:03" Value="360"></SplineDoubleKeyFrame>
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Windows2"
                                                   Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
                <SplineDoubleKeyFrame KeyTime="00:00:03" Value="0.1"></SplineDoubleKeyFrame>
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Windows2"
                                                   Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
                <SplineDoubleKeyFrame KeyTime="00:00:03" Value="0.1"></SplineDoubleKeyFrame>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
    </Window.Resources>
    <Window.Triggers>
        <EventTrigger RoutedEvent="FrameworkElement.Loaded">
            <BeginStoryboard Storyboard="{StaticResource ScaleXStoryboard}"> 
            </BeginStoryboard>
        </EventTrigger>
    </Window.Triggers>
   
    <Grid Background="Red" Width="200" Height="200">
       
    </Grid>
</Window>

 

执行这个程序,可以看出,最终旋转效果,并非包括window的外面的部分,既 window上的标题栏,按钮等,并不会跟着旋转。。旋转的只是window窗体的内容部分!。。。。。。。。。。

 

当然,如果加上 WindowStyle="None" AllowsTransparency="True"  这句话,也就没有了后面的黑色背景,但是,也是没了窗体的关闭等等按钮了。。。。

 

 


 

 

 

转载于:https://www.cnblogs.com/yanchanggang/archive/2010/04/05/1704983.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值