2012-08-02 85 views
0

我有一个System :: Windows :: Forms ::窗体,我试图将背景设置为透明。 此表单包含其他组件并具有背景图像。在系统上的透明背景::窗口::窗体::形式

我尝试了很多我在互联网上看到的解决方案,但没有任何工作。

  • 将窗体透明度设置为0 - >使整个窗体变得透明。
  • 使用颜色::透明 - >不似乎工作
  • 使用TransparencyKey - >似乎并不工作太...
  • 覆盖OnPaintBackground或OnPaint事件 - >事件并不似乎是叫...

图示码:

public ref class Form : public System::Windows::Forms::Form 
    { 
     public: Form(void) { 
      InitializeComponent(); 
     } 

     public: void InitializeComponent(void) 
     { 
      SetStyle(ControlStyles::SupportsTransparentBackColor, true); 
      this->TransparencyKey = System::Drawing::Color::Fuchsia; 
      this->BackColor = System::Drawing::Color::Fuchsia; 
      // or ... 
      this->BackColor = System::Drawing::Color::Transparent; 
     } 

     protected: virtual void OnPaint(PaintEventArgs e)override {} 
     protected: virtual void OnPaintBackground(PaintEventArgs e)override {} 
    } 

感谢您的帮助。 Cyrbil

编辑:

问题解决了,第一次了超越,它是:

protected: virtual void OnPaint(PaintEventArgs^ e)override {} 
protected: virtual void OnPaintBackground(PaintEventArgs^ e)override {} 

我只是忘了^。 然后,我不知道为什么,但我开始了一个新的项目,并尝试其他方法,它工作正常。所以从现在起我用这个新项目和一切都很好。我想这只是Visual C++谁有一些随机问题。

+0

不*编辑InitializeComponent(),它是由设计者自动生成的。在设计器重新生成代码时,您在那里写的任何内容都会随机消失。在调用InitializeComponent()之后,将代码移至构造函数**。 – 2012-08-02 17:46:04

回答

0

问题解决了,第一次了超越,它是:

protected: virtual void OnPaint(PaintEventArgs^ e)override {} 
protected: virtual void OnPaintBackground(PaintEventArgs^ e)override {} 

我只是忘了^。然后,我不知道为什么,但我开始了一个新项目,尝试其他方法,它工作正常。所以从现在起我用这个新项目和一切都很好。我想这只是Visual C++谁有一些随机问题。