MFCでグラフィックの平行移動を実現するには
MFC では、以下の手順でグラフィックスの平行移動が実現します。
- MFCアプリケーションを作成して、グラフィック変換を実行する必要があるビュークラスを開く。
- ビューのヘッダーファイルに、パン機能を制御するための変数を追加する。例:
CPoint m_offset;
- ビュークラスのコンストラクタで平行移動の変数を初期化する:
m_offset = CPoint(0, 0);
- ビュークラスのOnPaint()関数は、移動すべきグラフィックを描画する。 たとえば、OnPaint()関数でこの四角形を描くために、関連するCDC関数の1つを使用する。
void CMyView::OnPaint()
{
CPaintDC dc(this);
CRect rect(100, 100, 200, 200);
rect.OffsetRect(m_offset);
dc.Rectangle(rect);
}
- ビューのOnKeyDown()関数でキーの押下イベントを取得し、移動用の変数を更新する。例として、グラフィックを移動するために上下左右キーを押すことができる。
void CMyView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
switch (nChar)
{
case VK_UP:
m_offset.Offset(0, -10);
break;
case VK_DOWN:
m_offset.Offset(0, 10);
break;
case VK_LEFT:
m_offset.Offset(-10, 0);
break;
case VK_RIGHT:
m_offset.Offset(10, 0);
break;
}
Invalidate(); // 重新绘制视图
CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
- アプリをコンパイルして実行し、上下左右のカーソルキーで図形を動かします。図形は移動量の変数に従って、ビュー上を移動します。