桌面上方的浮动图标

Noa*_*rki 3 c# wpf winforms

我正在编写一个 C# 应用程序,我希望它在桌面上有一个浮动图标(如移动中的 Facebook 信使)。

我一直在互联网上搜索,但找不到任何有用的东西。有什么文章吗?想法?

Rez*_*aei 5

您需要创建一个没有标题栏和边框的表单,并使用图像作为表单的背景。还要使图像周围的区域透明。然后使表格可移动。

  • 将表格设置FormBorderStyleNone
  • 将表格设置TopMosttrue
  • 你也可以设置ShowInTaskbar为false。
  • 将图像BackgroundImage设置BackgroundImageLayoutCenter
  • 设置一个适合BackColor的表单,例如,如果您周围BackGroundImageMagenta颜色,则将BackColor表单的of设置为Magenta
  • TransparencyKey表单设置为您选择的颜色BackColor

通过这种方式,您将拥有一个形状,例如圆形(如果您的背景图像是圆形)。

然后通过鼠标左键拖动使表单移动,编写以下代码:

public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;

[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();

protected override void OnMouseDown(MouseEventArgs e)
{
    base.OnMouseDown(e);
    if (e.Button == MouseButtons.Left)
    {
        ReleaseCapture();
        SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
    }
}
Run Code Online (Sandbox Code Playgroud)

并且不要忘记添加 using System.Runtime.InteropServices;

这是使用的图像:

在此处输入图片说明

正如您在下面的结果中看到的,现在我们在其他窗口上方有一个浮动图标:

在此处输入图片说明

要获得具有更平滑边缘的高质量图标,请查看这篇文章: