专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > WPF

自定义相仿迅雷的漂浮窗口

发布时间:2011-06-23 13:56:03 文章来源:www.iduyao.cn 采编人员:星星草
自定义类似迅雷的漂浮窗口
  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
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: