system :: windows :: forms :: form上的透明背景

时间:2012-08-02 13:53:17

标签: .net winforms visual-c++ background transparency

我有一个System :: Windows :: Forms :: Form,我正在尝试将背景设置为透明。 此表单包含其他组件并具有背景图像。

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

  • 将表单不透明度设置为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 ++的一些随机问题。

1 个答案:

答案 0 :(得分:0)

问题解决了,首先是覆盖,它是:

protected: virtual void OnPaint(PaintEventArgs^ e)override {}
protected: virtual void OnPaintBackground(PaintEventArgs^ e)override {}
我忘记了^。然后,我不知道为什么,但我开始一个新的项目,并尝试其他方法,它的工作正常。所以从现在开始,我使用这个新项目,并且每个人都很好。我想这只是Visual C ++的一些随机问题。