문제

나는 배경이 움직일 때 배경을 복원 할 수있는 C ++ 코드를 찾고 있습니다. 현재 앱 초기화 중에 창 함량을 비트 맵으로 캡처하고 onpaint () 에서이 비트 맵을 그린 다음 오버레이 비트 맵을 그립니다. 나는 페인트를 더블 버퍼링하고 있습니다. 오버레이 된 비트 맵 위치는 창을 무효화하는 마우스와 함께 움직입니다.

배경 창이 클 때 너무 느리고 (Windows 데스크탑을 생각하십시오) PC는 느립니다. 내 생각에 마우스 움직임마다 큰 배경 비트 맵을 다시 그리는 것은 병목 현상이라는 것입니다. 이 작업을 수행하는 방법이 훨씬 더 좋고 빠른 방법이 있어야하지만 검색에서 필요한 답변을 찾지 못했습니다.

도움이 되었습니까?

해결책

아마도 가장 빠른 방법은 이동식 이미지를 하나의 비트 맵에 저장 한 다음 메모리에서 같은 크기의 두 번째 임시 비트 맵을 유지하는 것입니다. 메인 이미지 위에 이동식 비트 맵을 그려 보려면 먼저 BitBlt API 기능을 사용하여 이동식 비트 맵을 임시 비트 맵으로 끌어 당기고 이동식 비트 맵을 기본 이미지에 비트 블립트합니다. 이동식 비트 맵을 이동하면 1) Temp 비트 맵을 원래 위치에 비트 블 팅 한 다음 2) 새 위치를 Temp Bitmap에 비트를 비트로 비트로 비트로 비트를 비트를 비트 맵에서 비트 맵으로 비트에 비트로 비트로 비트로 비트로 비트로 비트로 비트로 비트로 비트로 비트로 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트로 비트로 비트로 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비트에 비축합니다.

다른 팁

체크 아웃해야합니다 이미지 목록 어떤 구현 질질 끄는 효과.

Win32 API에는 화면에서 이미지를 드래그하는 기능이 포함되어 있습니다. 드래그 함수는 이미지를 매끄럽게, 색상으로, 커서의 번쩍이는 것없이 움직입니다. 마스킹되지 않은 이미지와 마스크되지 않은 이미지를 모두 드래그 할 수 있습니다.

물론 사용자는 실제로 이미지를 드래그 할 필요가 없습니다. 이미지 위치를 변경하여 수행하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top