がりらぼ

WindowsRuntimeの応援ブログ

DirectXによるWindowsストアアプリゲーム開発入門vol.4 四角形を描画する

プロジェクトファイルをダウンロードして、TestDirectX_4_DrawRectangleディレクトリ内のソリューションファイルを開きましょう。
garicchi/DirectXSample · GitHub


f:id:garicchi:20131219113202p:plain

実行すると青い画面に四角形の枠が左から右に動いています。

RendererBase.hを見てみましょう。
四角形の大きさを定義するD2D1_RECT_F型のインスタンスと、四角形のブラシを決定するD2D1SolidColorBrush型のインスタンスがあります。

D2D1_RECT_F m_rectSize;

// ライン描画するためのリソース
Microsoft::WRL::ComPtr<ID2D1SolidColorBrush>    m_rectBrush;

Rendererbse.cppでは
コンストラクタで四角形の大きさを決定しています。

m_rectSize = RectF(10,10,100,100);

CreateDeviceDependentResourcesメソッドではSolidColorBrushを確保しています。

//リソースを確保するメソッドです コンストラクタからだけでなく、Mainクラスからも呼ばれます
void RendererBase::CreateDeviceDependentResources()
{
	//線に使用するブラシを確保します
	m_deviceResources->GetD2DDeviceContext()->CreateSolidColorBrush(ColorF(ColorF::Khaki), &m_rectBrush);
}

RenderメソッドではID2D1DeviceContextのDrawRectangleメソッドで四角形の描画を行います。

// フレームを画面に描画します。
void RendererBase::Render()
{
	//デバイスコンテキストの確保
	ID2D1DeviceContext* context = m_deviceResources->GetD2DDeviceContext();
	
	context->BeginDraw(); //描画開始
	
	context->DrawRectangle(
		m_rectSize,m_rectBrush.Get(),2.0f,0);
		
	context->EndDraw();	//描画終了
	
}

Updateメソッドで四角形の移動を行っています。

//更新処理です 定期的に呼ばれるので変数の制御などはここでおこないます
void RendererBase::Update(DX::StepTimer const& timer)
{
	m_rectSize = RectF(++m_rectSize.left,m_rectSize.top,++m_rectSize.right,m_rectSize.bottom);
}

今回は四角形の描画を行いました。直線とほぼ同じように描画が可能なのですが、これらはベクタグラフィックスなので簡単な記述で描画できます。