Win32 Bitblt - 거울 이미지 수평
문제
그래서 나는 스트레치 블트가 nwidthsrc/dest 및 nheightsrc/dest 매개 변수를 부정하여 이미지 및/또는 수직으로 이미지를 반영 할 수 있다는 것을 읽었습니다. StretchBLT의 성능 오버 헤드 없이이 기능을 원합니다. BITBLT로 동일한 기술을 시도했지만 작동하지 않았습니다.
StretchBlt의 과잉없이 BitBlt와 같은 단순한 이미지를 미러링 할 수있는 방법이 있습니까? 아니면 소스와 대상 크기가 동일하다면 StretchBLT가 성능에 영향을 미치지 않습니까?
해결책
BITBLT는 해당 개별 픽셀에서 수학 작업 (또는 XOR 등) 만 수행하므로 이미지를 어떤 식 으로든 크기를 조정하지 않습니다. 이것이 바로 StretchBlt의 바로 그렇습니다. 대부분의 경우 그래픽 카드를 사용하여 성능을 가속화 할 수있는 것처럼 StretchBlt (다른 그래픽 크기 조정 작업과 비교)가 미친 듯이 빠릅니다.
다른 팁
모든 Win32 기능은 아마도 극도로 최적화 될 것입니다.
StretchBlt가 큰 성능이 될 것이라고 생각하는 이유는 무엇입니까?
StretchBLT를 사용하여 응용 프로그램을 프로파일 링 했습니까?
모든 비트 맵 데이터를 직접 반전시키고 StretchBlt를 더 잘 할 수 있는지 확인할 수 있습니다.
다음은 도움이 될 수있는 링크입니다.
http://www.codeguru.com/cpp/gm/bitmap/specialeffects/article.php/c1739
이미지를 미러링하려면 픽셀을 역 순서로 반복하면됩니다. 예를 들어 수평으로 미러링하려면 다음을 수행하면됩니다.
- 이미지 캔버스를 크기의 두 배로 확장하십시오
- 이미지의 맨 아래에서 시작하여 픽셀을 상단에서 미러 영역으로 작성하십시오.
- 왼쪽에서 오른쪽으로 3 단계를 수행하십시오.
나는 당신이 어떤 언어를 사용하고 있는지 모르지만 대부분의 언어를 사용하면 GDI를 사용하여 개별적으로 픽셀이나 비트를 조작 할 수 있습니다.
이미지에 대한 추가 정보를 알지 못한다면 (예 : 경계가 있으므로 특정 픽셀을 뒤집을 필요가 없다면 StretchBlt를 더 효율적으로 수행하지 않을 것입니다.