Windows32APIプログラム
Posted: 2012年12月15日(土) 20:55
ペイントのようなプログラムを作っているのですが
こんな感じでマウスが動いたらそこに円を描画するようにしています
鉛筆で書いたようにスーっと線が引けるかと思ったのですが、処理が遅いのか点と点の位置が離れてしまいました。
マウスを動かし、なめらかな線が引けるにはどうしたらよいのでしょうか?
switch(uMsg) {
case WM_CREATE: //ウィンドウが作られたら
hdc = GetDC(hWnd);
hMemDC = CreateCompatibleDC(hdc);
hBitmap = CreateCompatibleBitmap(hdc, CANVAS_WINDOW_WIDTH, CANVAS_WINDOW_HEIGHT);
ReleaseDC(hWnd, hdc);
SelectObject(hMemDC, hBitmap);
SelectObject(hMemDC, GetStockObject(BLACK_PEN));
SelectObject(hMemDC, GetStockObject(WHITE_BRUSH));
Rectangle(hMemDC, -1, -1, CANVAS_WINDOW_WIDTH, CANVAS_WINDOW_HEIGHT);
SelectObject(hMemDC, GetStockObject(BLACK_BRUSH));
return 0L;
case WM_MOUSEMOVE:
if(wParam == MK_LBUTTON) {
int x = LOWORD(lParam), y = HIWORD(lParam);
Ellipse(hMemDC, x-2, y-2, x+2, y+2);
InvalidateRect(hWnd, NULL, FALSE);
}
return 0L;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
BitBlt(hdc, 0, 0, CANVAS_WINDOW_WIDTH, CANVAS_WINDOW_HEIGHT, hMemDC, 0, 0, SRCCOPY);
EndPaint(hWnd, &ps);
return 0L;
}
こんな感じでマウスが動いたらそこに円を描画するようにしています
鉛筆で書いたようにスーっと線が引けるかと思ったのですが、処理が遅いのか点と点の位置が離れてしまいました。
マウスを動かし、なめらかな線が引けるにはどうしたらよいのでしょうか?