再描画がうまくいかない – プログラミング – Home

再描画がうまくいかない
 
通知
すべてクリア

[解決済] 再描画がうまくいかない


Eriko
 Eriko
(@Eriko)
ゲスト
結合: 16年前
投稿: 7
Topic starter  

お世話になります
環境は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 );
}


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

↓こんなんじゃダメですか?

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
 Eriko
(@Eriko)
ゲスト
結合: 16年前
投稿: 7
Topic starter  

   επιστημη さん

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

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました