再描画がうまくいかない

[戻る]
Eriko 2008/09/24(水) 11:16:25
お世話になります
環境はWinXP Visual C++ 2008 Express Edition です
目的:フォームのクライアント領域にクライアント領域よりすこし
   狭い四角形を描き フォームの大きさが変わっても
   それに連動して四角形の大きさも変わるようにします
経過:デフォルトでフォームをつくり(
     新規作成→プロジェクト→VisualC++ Windowsフォームアプリケーション選
択
     プロジェクト名・ソルーション名 ともにHello1 )
     そのあと下記のようにForm1()のあとにOnPaintを追加しました
状況:フォームの右下をドラッグしてはなしても再描画されなかったり
    描画が中途半端だったりします

そこでお伺いしたいのはどこに原因があると考えられますでしょか



    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: ここにコンストラクタ コードを追加します
            //
        }
    virtual void OnPaint(PaintEventArgs ^e) override
    {
        Graphics^ g = e->Graphics;

        // 四角形座標
        float x = 10.0F;
        float y = 10.0F;
        float width = float(ClientSize.Width - 20);
        float height = float(ClientSize.Height - 20);

        // 描画
        Pen^ blackPen = gcnew Pen( Color::Black );
        g->DrawRectangle( blackPen, x, y, width, height );
    }

επιστημη [HomePage] 2008/09/24(水) 11:53:16
↓こんなんじゃダメですか?

    private: 
      System::Void Form1_Paint(System::Object^  sender, 
System::Windows::Forms::PaintEventArgs^  e) {
        // ここはそのまま
      }
    private: 
      // SizeChangedイベントを捕捉し、
      // サイズ変更されたとき再描画を促す
      System::Void Form1_SizeChanged(System::Object^  sender, 
System::EventArgs^  e) {
        this->Invalidate();
      }

Eriko 2008/09/24(水) 13:40:44
[[解決]]
   επιστημη さん

   ばっちり うまくいきました

  早いご回答 たいへんありがとうございました

古いスレッドには追加発言できません。