mfcでランダムな三角形を描く方法
MFC(マイクロソフトファウンデーションクラス)でランダムな三角形を描くには、以下の手順に従います。
Visual Studio を開き、MFC ダイアログアプリケーションプロジェクトを新規作成します。
リソースビューでダイアログリソースファイル (例: MainDialog.rc) を開く
ツールボックスから[静的コントロール]と[ボタン]をダイアログボックスに追加します。
ダイアログクラスのメッセージマッパーに、ボタンが関連付ける応答関数(例えば:OnBnClickedDrawTriangle)を追加するには、ボタンをダブルクリックする。
ヘッダ―ファイル(例: MainDialog.h)を開き、CMainDialog クラスの宣言より前に以下のコード片段を追加します:
#include <afxtempl.h>
struct STriangle
{
CPoint pt1;
CPoint pt2;
CPoint pt3;
};
ダイアログクラスのヘッダファイルには、以下のメンバー変数とメソッドを宣言します。
// 随机生成的三角形集合
CArray<STriangle, STriangle&> m_Triangles;
// 绘制随机三角形的方法
void DrawRandomTriangles(CDC* pDC);
CMainDialog のコンストラクタ内で乱数生成器を初期化しておきます。(例: MainDialog.cpp を開くなど)
// 初始化随机数生成器
srand((unsigned int)time(NULL));
DrawRandomTriangles メソッドの実装で、ランダムな三角形のデータと描画を生成します。
void CMainDialog::DrawRandomTriangles(CDC* pDC)
{
CBrush brush(RGB(255, 0, 0)); // 使用红色画刷
CPen pen(PS_SOLID, 1, RGB(0, 0, 0)); // 使用黑色笔
// 清空之前绘制的三角形
pDC->FillRect(CRect(10, 10, 400, 400), &CBrush(RGB(255, 255, 255)));
for (int i = 0; i < 10; ++i) // 随机生成10个三角形
{
STriangle triangle;
triangle.pt1.x = rand() % 391 + 10; // 在10-400范围内生成点的坐标
triangle.pt1.y = rand() % 391 + 10;
triangle.pt2.x = rand() % 391 + 10;
triangle.pt2.y = rand() % 391 + 10;
triangle.pt3.x = rand() % 391 + 10;
triangle.pt3.y = rand() % 391 + 10;
// 绘制当前随机生成的三角形
pDC->SelectObject(&brush);
pDC->SelectObject(&pen);
pDC->MoveTo(triangle.pt1);
pDC->LineTo(triangle.pt2);
pDC->LineTo(triangle.pt3);
pDC->LineTo(triangle.pt1);
// 将当前随机生成的三角形添加到集合中
m_Triangles.Add(triangle);
}
}
ボタンの OnBnClickedDrawTriangle クリックイベント処理関数内で DrawRandomTriangles メソッドを呼び出して描画を実施する。
void CMainDialog::OnBnClickedDrawTriangle()
{
CDC* pDC = GetDC();
DrawRandomTriangles(pDC);
ReleaseDC(pDC);
}
ボタンをクリックすると、ランダムに生成された三角形をダイアログに描画するプログラムをコンパイルして実行します。
基本的には、MFCでのランダム三角形の描画の流れです。用途に合わせて、色や線の種類などを変更し、高度な機能を実現させましょう。