DirectXでの曲線描画について
Posted: 2016年9月10日(土) 16:54
DirectXで曲線(ベジエ曲線)を描画しているのですが、いきなり曲線全体を描画するのではなく、時間の経過に従って描画したいのですが、どのようにすればよいのでしょうか?
#include <Windows.h>
LRESULT CALLBACK WndProc ( HWND hWnd , UINT uMsg , WPARAM wParam , LPARAM lParam )
{
HDC hDC;
PAINTSTRUCT ps;
// 座標の配列
static POINT pt [ 3 ];
switch ( uMsg )
{
case WM_CREATE:
// 座標値の設定
pt [ 0 ].x = 0;
pt [ 0 ].y = 0;
pt [ 1 ].x = 150;
pt [ 1 ].y = 350;
pt [ 2 ].x = 400;
pt [ 2 ].y = 100;
pt [ 3 ].x = 800;
pt [ 3 ].y = 600;
break;
case WM_PAINT:
// 曲線の描画
hDC = BeginPaint ( hWnd , &ps );
MoveToEx ( hDC , pt [ 0 ].x , pt [ 0 ].y , NULL );
PolyBezier ( hDC , pt , 4 );
// 描画終了
EndPaint ( hWnd , &ps );
break;
case WM_KEYDOWN:
if( wParam == VK_ESCAPE )
{
UINT nID = MessageBox ( NULL , "ウィンドウを閉じますか?" , "Message" , MB_YESNO );
if ( nID == IDYES )
{
DestroyWindow ( hWnd );
}
else if ( nID == IDNO )
{
MessageBox ( NULL , "OK" , "Message" , MB_OK );
}
}
break;
case WM_DESTROY:
PostQuitMessage ( 0 );
break;
}
return DefWindowProc ( hWnd , uMsg , wParam , lParam );
}
int WINAPI WinMain ( HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR IpCmdLine , int nCmdShow )
{
UNREFERENCED_PARAMETER ( hPrevInstance );
UNREFERENCED_PARAMETER ( IpCmdLine );
HWND hWnd;
MSG msg;
WNDCLASS winc;
winc.style = CS_HREDRAW | CS_VREDRAW;
winc.lpfnWndProc = WndProc;
winc.cbClsExtra = winc.cbWndExtra = 0;
winc.hInstance = hInstance;
winc.hIcon = LoadIcon ( NULL , IDI_APPLICATION );
winc.hCursor = LoadCursor ( NULL , IDC_ARROW );
winc.hbrBackground = ( HBRUSH ) GetStockObject ( WHITE_BRUSH );
winc.lpszMenuName = NULL;
winc.lpszClassName = TEXT ( "ベジエ" );
if ( !RegisterClass ( &winc ) )
{
return -1;
}
// ウィンドウスタイル定義
const int wStyle = WS_OVERLAPPEDWINDOW | WS_VISIBLE;
// ウィンドウ生成
hWnd = CreateWindow (
TEXT ( "ベジエ" ) ,
TEXT ( "ベジエ曲線" ) ,
wStyle ,
USEDEFAULT ,
USEDEFAULT ,
USEDEFAULT ,
USEDEFAULT,
NULL ,
NULL ,
hInstance ,
NULL
);
if ( hWnd == NULL )
{
return -1;
}
while ( GetMessage ( &msg , NULL , 0 , 0 ) )
{
DispatchMessage ( &msg );
}
return msg.wParam;
}
//==================== EOF ====================//