2012-08-02 1 views
0

System :: Windows :: Forms :: Form을 가지고 있으며 배경을 투명하게 설정하려고합니다. 이 양식에는 다른 구성 요소가 들어 있으며 배경 이미지가 있습니다.시스템의 투명한 배경 :: 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++에 임의의 문제가있는 것 같아요.

+0

* InitializeComponent()를 편집하지 * 마십시오. 디자이너가 자동 생성합니다. 디자이너가 코드를 다시 생성하면 거기에 쓰는 내용이 무작위로 사라집니다. ** InitializeComponent() 호출 후 코드를 생성자로 이동합니다. –

답변

0

문제는 재정을 위해, 그것의, 해결 :

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

난 그냥^잊어 버려. 그럼, 왜 모르겠지만 새 프로젝트를 시작하고 다른 방법을 시도하고 잘 작동합니다. 그래서 지금부터 나는이 새로운 프로젝트와 모든 것을 잘 사용한다. 나는 Visual C++에 임의의 문제가있는 것 같아요.