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)) }; }
窗体初始化时,设置背景图片。
小结:其实就是一个普通的窗体上面,设置了它的显示位置以及显示在屏幕的最上层等其它一些属性而已。