zoukankan      html  css  js  c++  java
  • 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)) }; }

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

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

  • 相关阅读:
    剑指offer思路总结
    redis为什么设计成单线程
    vscode 常用工具
    redis 数据结构的实现
    记一次rm -rf 的悲伤故事
    netstate端口连接状态
    查询mysql最后更新时间
    boost库安装
    docker镜像不支持常用命令
    消息队列--线程安全
  • 原文地址:https://www.cnblogs.com/wangqiang3311/p/7928444.html
Copyright © 2011-2022 走看看