自定义类似迅雷的漂浮窗口

  1. 自定义窗口样式,通过自定义ControlTemplate改变窗口的形状.
    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">     
    
    
    
        <!--窗口模板-->
    
        <ControlTemplate x:Key="BaseWindowControlTemplate" TargetType="{x:Type Window}">
    
            <Grid Width="Auto" Height="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">       
    
                <Ellipse Stroke="YellowGreen" StrokeThickness="3">           
    
                        <Ellipse.Fill>                    
    
                            <VisualBrush >
    
                                <VisualBrush.Visual>                         
    
                                    <Image  Source=".\Resource\message.jpg"/>                                                         
    
                            </VisualBrush.Visual>
    
                            </VisualBrush>                   
    
                    </Ellipse.Fill>               
    
                </Ellipse>           
    
            </Grid>
    
        </ControlTemplate>
    
    
    
        <!--窗口样式-->
    
        <Style x:Key="BaseWindowStyle" TargetType="{x:Type Window}">
    
            <Setter Property="Template" Value="{StaticResource BaseWindowControlTemplate}"/>
    
            <Setter Property="Background" Value="Transparent" />
    
            <Setter Property="WindowStyle" Value="None" />
    
            <Setter Property="AllowsTransparency" Value="True" />        
    
        </Style>
    
    
    
    </ResourceDictionary>
  2. 主窗口的xaml文件
    <Window x:Class="FlowNotes.MainWindow"
    
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    
            Title="MainWindow" Height="50" Width="50" MouseLeftButtonDown="Window_MouseLeftButtonDown" WindowStyle="None" WindowStartupLocation="Manual" ResizeMode="NoResize" SizeToContent="Manual" BorderThickness="0" MouseDoubleClick="Window_MouseDoubleClick" IsTabStop="False" ShowInTaskbar="False">
    
        <Window.Resources>
    
            <ResourceDictionary>
    
                <ResourceDictionary.MergedDictionaries>
    
                    <ResourceDictionary Source="Generic.xaml"/>
    
                </ResourceDictionary.MergedDictionaries>         
    
            </ResourceDictionary>    
    
        </Window.Resources>
    
        <Window.Style>
    
            <Style TargetType="{x:Type Window}"  BasedOn="{StaticResource BaseWindowStyle}" />
    
        </Window.Style>
    
    </Window>
  3. 主窗口代码:
    /// <summary>
    
        /// Interaction logic for MainWindow.xaml
    
        /// </summary>
    
        public partial class MainWindow : Window
    
        {  
    
            public MainWindow()
    
            {         
    
                InitializeComponent();
    
                SetWindowLocation();
    
                
    
            }
    
    
    
            //无标题栏窗口的移动
    
            private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    
            {
    
                this.DragMove();
    
            }
    
            //设置窗口距离右上角100单位
    
            private void SetWindowLocation()
    
            {
    
                double screenHeight = SystemParameters.FullPrimaryScreenHeight;
    
                double screenWidth = SystemParameters.FullPrimaryScreenWidth;
    
                this.Left = screenWidth - 100;
    
                this.Top = 100;
    
            }
    
                           
    
        }
  4. 运行结果:
    image

你可能感兴趣的:(自定义)