WPF-悬浮窗(类似于360)

boss要求开发一个类似于360的悬浮窗,如下图所示:

 

目前采用的是wpf做的客户端,之前有个winform的项目,我参考了下,完成了wpf版的悬浮窗。

Height="52" Width="131"  WindowStartupLocation="Manual"  ShowInTaskbar="False"  WindowStyle="None"  WindowState="Normal" 

MouseLeftButtonDown="Window_MouseLeftButtonDown" Closed="Window_Closed" SnapsToDevicePixels="True" ResizeMode="NoResize" AllowsTransparency="True"

以上窗口属性:

定义了窗口大小,启动位置(手动设置),窗口样式(透明,去掉默认样式),鼠标左键按下事件(实现拖动)

       /// <summary>
        /// 窗口拖动
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            this.DragMove();
        }

因为去掉了默认的窗体效果,失去了默认窗口拖动功能,所以又给加上。

 void FloatWindow_Loaded(object sender, RoutedEventArgs e)
        {
            this.Topmost = true;
            this.Left = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width - 300;
            this.Top = 300;
        }

窗体在加载后,控制它显示在屏幕最前端,以及位置。


  private static readonly string TipToolAll = "pack://application:,,,/Skin/images/TipToolMainHover.png";
public FloatWindow() { InitializeComponent(); this.Background = new ImageBrush { ImageSource = new BitmapImage(new Uri(TipToolAll)) }; }

窗体初始化时,设置背景图片。

小结:其实就是一个普通的窗体上面,设置了它的显示位置以及显示在屏幕的最上层等其它一些属性而已。

 

posted @ 2017-11-30 13:13  micDavid  阅读(6213)  评论(0编辑  收藏  举报