我有一个 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 {}
}
谢谢你的帮助。西比尔
编辑:
问题解决了,首先是覆盖,它是:
protected: virtual void OnPaint(PaintEventArgs^ e)override {}
protected: virtual void OnPaintBackground(PaintEventArgs^ e)override {}
我只是忘记了^。然后,我不知道为什么,但是我开始了一个新项目并尝试了其他方法,并且效果很好。所以从现在开始我使用这个新项目,一切都很好。我猜只是 Visual C++ 有一些随机问题。