0

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 {}

^を忘れてしまいました。その後、理由はわかりませんが、新しいプロジェクトを開始して他の方法を試してみましたが、問題なく動作しました。だから今から私はこの新しいプロジェクトを使用し、すべてがうまくいきます。ランダムな問題が発生したのはVisualC++だけだと思います。

4

1 に答える 1

0

問題は解決しました。最初にオーバーライドについては、次のとおりです。

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

^を忘れてしまいました。その後、理由はわかりませんが、新しいプロジェクトを開始して他の方法を試してみましたが、問題なく動作しました。だから今から私はこの新しいプロジェクトを使用し、すべてがうまくいきます。ランダムな問題が発生したのはVisualC++だけだと思います。

于 2012-08-03T08:09:55.177 に答える