不規則窗口繼承自 System::Windows::Forms::Form
在構造方法中設置
 
  this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::None; // 不顯示邊框
   this->ShowInTaskbar = false//不顯示在任務欄中
   this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen; // 顯示在屏幕中央
   this->TopMost = true// 窗口在最前面
   this->BackgroundImageLayout = ImageLayout::Center; // 背景圖的位置
    this->BackgroundImage = getTransparentBmpFromImg(img); // 轉換為透明圖片ARGB
    this->Size = this->BackgroundImage->Size; //  窗口大小與背景圖相同
    
// 背景色透明
   this->BackColor = Color::Black;
   
this->TransparencyKey = Color::Black;

 
// convert Image to transparent Bitmap 你可以把img先繪到ARGB的Bitmap中,現轉換。
 Bitmap^ getTransparentBmpFromImg(Image^ img) {
  Bitmap^ bmp = gcnew Bitmap(img);
  bmp->MakeTransparent(bmp->GetPixel(0, 0));
  return bmp;
 } 

Bitmap
^ getTransparentBmpFromImg(Image^ img) {
  Bitmap
^ bmp = gcnew Bitmap(img);
  
int w = bmp->Width;
  
int h = bmp->Height;
  Rectangle rect 
= Rectangle(00, w, h);
  ::Imaging::BitmapData
^ bmpData = bmp->LockBits(rect, Imaging::ImageLockMode::ReadWrite, bmp->PixelFormat);
  IntPtr iPtr 
= bmpData->Scan0;
  unsigned 
int* data = reinterpret_cast<unsigned int*>(iPtr.ToInt32());
  
int s = bmpData->Stride;
  unsigned 
int tp = data[0];
  
for (int r = 0; r < h; r++)
  {
   unsigned 
int* basePtr = data + r*s/4;
   
for (int c = 0; c < w; c++)
   {
    
if (basePtr[c] == tp)
    {
     basePtr[c] 
= 0;
    }
   }
  }
  bmp
->UnlockBits(bmpData);
  
return bmp;
 }

可以用System::Windows::Forms::Timer 來實現不規則窗口的淡入淡出