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