2015-12-27 4 views
1

Я пишу приложение C#, и я хочу, чтобы у него был плавающий значок на рабочем столе (например, Facebook-мессенджер на мобильном телефоне).Плавающий значок над рабочим столом

Я искал интернет, но не нашел ничего полезного. Любые статьи? Идеи?

+0

Вам нужно создать форму с 'FormBorderStyle' установлен 'None'. Также, если вы хотите использовать изображение для своей формы, установите «BackgroundImage» и установите формы «BackColor» и «TransparencyKey». –

ответ

3

Вам нужно создать форму без заголовка и границы и использовать изображение как фон своей формы. Также сделайте область вокруг изображения прозрачной. Затем сделайте форму подвижной.

  • установить форму FormBorderStyle в None
  • установить форму TopMost в true
  • Вы также можете установить ShowInTaskbar ложь.
  • Установка изображения в качестве BackgroundImage и установить BackgroundImageLayout к Center
  • Установить подходящую для BackColor формы, например, если ваш BackGroundImage имеет Magenta цвета вокруг, установить BackColor формы для 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); 
    } 
} 

И не забудьте добавить using System.Runtime.InteropServices;

Вот изображение, используемое:

enter image description here

И как вы видите в приведенном ниже результате, теперь у нас есть плавающий значок над другими окнами:

enter image description here

Чтобы иметь высокое качество значок с более гладкими краями, посмотрите на этот пост: