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

  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. 运行结果:
时间: 2024-08-11 22:13:07

自定义类似迅雷的漂浮窗口的相关文章

Android UI之自定义——类似iOS的Tabbar

Android UI之自定义--类似iOS的Tabbar Tabbar最早出现在iOS,iOS中的TabBarController实现了这个功能,开发起来相当简单.现在的APP,大多数都会使用Tabbar来作为应用的功能导航,界面简单清晰.那么Android常见的实现是通过RadioGroup来实现,今天将带来自定义实现,补充RadioGroup实现的不足. 先看看常见的软件中的使用: 这个是高铁管家APP,大家应该非常熟悉.这个APP的首页底部就是一个类似iOS的Tabbar.这里就不多举例子

Android自定义类似ProgressDialog效果的Dialog

Android自定义类似ProgressDialog效果的Dialog. 方法如下: 1.首先准备两张自己要定义成哪样子的效果的图片和背景图片(也可以不要背景). 如我要的效果: 2.定义loading_dialog.xml布局文件(这里你也可以按自己的布局效果定义,关键是要有个imageView): [html] view plaincopy <?xml version="1.0" encoding="utf-8"?> <LinearLayout

Web开发技巧:使用自定义数据属性创建弹出窗口

在开发web应用时,有时会用JavaScript获取文档之外的信息,某些情况下,我们需要用一些技巧来处理这些额外信息以保证Web应用能够正常运行.一般而言,技巧无外乎是将额外的信息塞入事件处理程序或滥用rel属性或class属性以方便注入行为.感谢HTML规范引入了自定义数据属性,让不堪回首的往日一去不返. 所有的自定义数据属性都以data一前缀开头,HTML文档的验证器会在验证时忽略它.开发人员可以在任意元素中加入自定义数据属性,属性值可以是照片的元数据.经纬度坐标或者弹出窗口的尺寸.最棒的是

Android 自定义Spinner和其下拉窗口

http://www.cnblogs.com/coding-way/p/3549865.html 现效果: 自定义Spinner其实包括两个部分: 第一部分是用来打开下拉列表的按钮,如图,这个绿色背景直接设置Spinner的背景就行,素材文件如下: 里面的文字需要注意下,Spinner控件没有直接修改文字的接口,这个文字实际上是在Adapter中设置,例如: ArrayAdapter<String> adapter = new ArrayAdapter<String>(getCon

iPhone手机解锁效果&amp;&amp;自定义滚动条&amp;&amp;拖拽--Clone&amp;&amp;窗口拖拽(改变大小/最小化/最大化/还原/关闭)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

自定义类似优酷首页的BannerView幻灯片展示

尼玛,最近自定义view玩hight了根本停不下来,今天想封装一个类似优酷首页title的banner栏,我会在这个基础上加一个title的展示,优酷的banner如下图: 首先是布局文件,自然是ViewPager主打,配上底层的dot indicator和title栏: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas

使用VB6写一个自定义的进度信息框窗口

一.起因说明 之前有些项目是用Access完成的,当时为了给用户显示一些进度信息,自制了一个进度信息窗体,类似下图所示: 随着项目不断变迁,需要将进度信息按阶段及子进度进行显示,并且出于代码封装的需求,需要将其封装到一个dll文件中.最终完成的效果如下图: 调用该进度信息框的代码类似如下所示: 1 Private Sub cmdCommand1_Click() 2 Dim pb As New CProgressBar 3 pb.AddStage "第一步", 10000 4 pb.Ad

自定义类似QMutexLocker的CMutexLocker

最近做项目遇到一个需求,有一个buttonSlot()执行要耗点时间,为了防止用户无限制的乱点出现问题,考虑加一个互斥锁,使得每次执行完后才允许执行下一次.大概意思是: //QMutex  m_mutex:是window类的成员变量void window::buttonSlot(){   if(m_mutex.islock())    {      return ;    }    m_mutex.lock();   ..   ...   ...  m_mutex.unlock();} Qt提供

WPF用户控件实现类似WinForm的子窗口

1.WPF 介绍 .NET Framework 4 WPF 是下一代显示系统,用于生成Windows 客户端应用程序. 使用 WPF可以创建广泛的独立应用程序以及浏览器承载的应用程序. WPF 的核心是一个与分辨率无关并且基于向量的呈现引擎,旨在利用现代图形硬件的优势.WPF 通过一整套应用程序开发功能扩展了这个核心,这些功能包括Extensible Application Markup Language (XAML).控件.数据绑定.布局.2-D和3-D图形.动画.样式.模板.文档.媒体.文本