gdi + Graphics :: DrawImage очень медленно ~~

Я использую GDI + Graphic для рисования изображения 4000 * 3000 на экране, но это действительно медленно. Это займет около 300 мс. Я бы хотел, чтобы он занимал менее 10 мс.

Bitmap *bitmap = Bitmap::FromFile("XXXX",...);

//-------------------------------------------- // эта часть занимает около 300 мс, ужасно!

int width = bitmap->GetWidth();
int height = bitmap->GetHeight();
DrawImage(bitmap,0,0,width,height);

// ------------------------------------------

Я не могу использовать CachedBitmap, потому что хочу позже редактировать растровое изображение.

Как я могу улучшить это? Или что-то не так?

Эта встроенная функция GDI также рисует изображение на экране, и это займет всего 1 мс:

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);

// ------------------------------------------------ --------------

Если я хочу использовать StretchDIBits, мне нужно передать BITMAPINFO, но как я могу получить BITMAPINFO из Gdi + Bitmap Object? Я провел эксперимент с помощью FreeImage lib, я вызываю StretchDIBits, используя объект FreeImageplus, он рисуется очень быстро. Но теперь мне нужно нарисовать Bitmap и написать некоторый алгоритм в битовом массиве Bitmap. Как я могу получить BITMAPINFO, если у меня есть объект Bitmap? Это действительно раздражает -___________- |

Ответы на вопрос(9)

Ваш ответ на вопрос