저는 C++과 GDI +를 사용하고 있습니다. 저는 벡터 드로잉 어플리케이션을 만들고있을 것이고 드로잉에 GDI +를 사용하고 싶습니다. 내가 제대로하고 있어요 만약 내가 궁금하네요GDI + 드로잉을 최적화 하시겠습니까?
case WM_PAINT:
GetCursorPos(&mouse);
GetClientRect(hWnd,&rct);
hdc = BeginPaint(hWnd, &ps);
MemDC = CreateCompatibleDC(hdc);
bmp = CreateCompatibleBitmap(hdc, 600, 600);
SelectObject(MemDC,bmp);
g = new Graphics(MemDC);
for(int i = 0; i < 1; ++i)
{
SolidBrush sb(Color(255,255,255));
g->FillRectangle(&sb,rct.top,rct.left,rct.right,rct.bottom);
}
for(int i = 0; i < 250; ++i)
{
pts[0].X = 0;
pts[0].Y = 0;
pts[1].X = 10 + mouse.x * i;
pts[1].Y = 0 + mouse.y * i;
pts[2].X = 10 * i + mouse.x;
pts[2].Y = 10 + mouse.y * i;
pts[3].X = 0 + mouse.x;
pts[3].Y = (rand() % 600) + mouse.y;
Point p1, p2;
p1.X = 0;
p1.Y = 0;
p2.X = 300;
p2.Y = 300;
g->FillPolygon(&b,pts,4);
}
BitBlt(hdc,0,0,900,900,MemDC,0,0,SRCCOPY);
EndPaint(hWnd, &ps);
DeleteObject(bmp);
g->ReleaseHDC(MemDC);
DeleteDC(MemDC);
delete g;
break;
, 아니면 제가 CPU를 죽이는 영역이있는 경우 :
은 I'v은 잘 알고 얻을 수있는 간단한 테스트를 만들었습니다. 지금 당장 이걸 렌더링하는 데 1 초 ~ 1 초가 걸리므로 아주 빨리 다시 그려 낼 수 있기를 원합니다. 감사합니다.실제 상황에서는 화면의 일부를 다시 그리는 것으로 파악하고이 범위 내에서 요소 만 다시 그리는 것이 좋습니다.
나는 얼마 전 관련 질문을했다. 어쩌면이 몇 가지 포인터를 줄 수 있습니다. http://stackoverflow.com/questions/957573/winforms-how-to-speed-up-invalidate – Pedery