4000 * 3000 이미지를 화면에 그릴 때 GDI + 그래픽을 사용하고 있지만 실제로 느립니다. 약 300ms가 걸립니다. 나는 그것이 단지 10ms 미만을 차지하기를 바란다.gdi + Graphics :: DrawImage really slow ~~
Bitmap *bitmap = Bitmap::FromFile("XXXX",...);
// ----------------------------------------- --- //이 부분은 약 300ms가 소요됩니다.
int width = bitmap->GetWidth();
int height = bitmap->GetHeight();
DrawImage(bitmap,0,0,width,height);
// ----------------------------------------- -
나중에 비트 맵을 편집하고 싶기 때문에 CachedBitmap을 사용할 수 없습니다.
어떻게 향상시킬 수 있습니까? 또는 어떤 것이 잘못 되었습니까? ------------------
SetStretchBltMode(hDC, COLORONCOLOR);
StretchDIBits(hDC, rcDest.left, rcDest.top,
rcDest.right-rcDest.left, rcDest.bottom-rcDest.top,
0, 0, width, height,
BYTE* dib, dibinfo, DIB_RGB_COLORS, SRCCOPY);
// :
이 기본 GDI의 기능은 화면에 이미지를 그립니다, 그리고 그것은 단지 1 밀리 받아 --------------------------------------------
만약 내가 StretchDIBits를 사용하고 싶습니다. BITMAPINFO를 전달해야합니다. 그러나 GDi + Bitmap 객체에서 BITMAPINFO를 얻으려면 어떻게해야합니까? 나는 FreeImage 라이브러리에 의해 실험을했는데, FreeImageplus 객체를 사용하여 StretchDIBits를 호출했다. 정말 빨랐다. 하지만 이제 Bitmap을 그려야하고 Bitmap의 비트 배열에 알고리즘을 작성해야합니다. Bitmap 개체가있는 경우 어떻게 BITMAPINFO를 얻을 수 있습니까? 정말 귀찮아 .- ___________- |
두 번째 예제를 살펴보면 StretchDIBits가 GPU 가속화 (아마 DrawImage)라고 말하고 싶습니다. 내 업데이트 답변을 참조하십시오. StretchDIBits를 사용하면 문제를 만족스럽게 해결할 수 있습니까? – PhiLho
감사합니다 PhiLho,하지만 StretchDIBits 사용할 수 없습니다 ~ 난 그냥 빨리 알고, 큰 이미지를 그릴 수 있습니다 ~ ~ 내가 왜 ~~/ – user25749
사용할 수없는 문제를 추가 할 수 있습니다. 비트 맵을 변환 할 수 있습니다. Bitmap :: GetHBITMAP있는 GDI 개체 (내 대답 업데이트 링크 참조). – PhiLho