C ++에서 창문 주위에 비트 맵을 빠르게 움직입니다.
-
06-07-2019 - |
문제
나는 배경이 움직일 때 배경을 복원 할 수있는 C ++ 코드를 찾고 있습니다. 현재 앱 초기화 중에 창 함량을 비트 맵으로 캡처하고 onpaint () 에서이 비트 맵을 그린 다음 오버레이 비트 맵을 그립니다. 나는 페인트를 더블 버퍼링하고 있습니다. 오버레이 된 비트 맵 위치는 창을 무효화하는 마우스와 함께 움직입니다.
배경 창이 클 때 너무 느리고 (Windows 데스크탑을 생각하십시오) PC는 느립니다. 내 생각에 마우스 움직임마다 큰 배경 비트 맵을 다시 그리는 것은 병목 현상이라는 것입니다. 이 작업을 수행하는 방법이 훨씬 더 좋고 빠른 방법이 있어야하지만 검색에서 필요한 답변을 찾지 못했습니다.
해결책
아마도 가장 빠른 방법은 이동식 이미지를 하나의 비트 맵에 저장 한 다음 메모리에서 같은 크기의 두 번째 임시 비트 맵을 유지하는 것입니다. 메인 이미지 위에 이동식 비트 맵을 그려 보려면 먼저 BitBlt API 기능을 사용하여 이동식 비트 맵을 임시 비트 맵으로 끌어 당기고 이동식 비트 맵을 기본 이미지에 비트 블립트합니다. 이동식 비트 맵을 이동하면 1) Temp 비트 맵을 원래 위치에 비트 블 팅 한 다음 2) 새 위치를 Temp Bitmap에 비트를 비트로 비트로 비트로 비트를 비트를 비트 맵에서 비트 맵으로 비트에 비트로 비트로 비트로 비트로 비트로 비트로 비트로 비트로 비트로 비트로 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트로 비트로 비트로 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비축합니다.