как сделать это эффективно? (vc6)

pulmo

вот такой кусок кода стоит у меня в onDraw для отображения картинки на экран,
for (i = 0; i < y; i++)
for (i1 = 0; i1 < x; i1++)
{
tmpCol = Image->m_Picture[i1];
pDC->SetPixel(i1,i,RGB(tmpCol,tmpCol,tmpCol;
}
по своей ламерности я не знаю как сделать этот вывод быстрым (вроде через BitBlt или типа того, но не получается, еще как-то можно через CDib каков наиболее простой способ?

pulmo

мне оно срочно надо...

street_racer

Ты что собственно хочешь-то?
Bitmap нарисовать или что-то более хитрое?

naska79

CPictureHolder::CreateFromBitmap( CBitmap* pBitmap, CPalette* pPal = NULL, BOOL bTransferOwnership = TRUE );
или
CPictureHolder::CreateFromBitmap( HBITMAP hbm, HPALETTE hpal = NULL );
Потом
void CPictureHolder::Render( CDC* pDC, const CRect& rcRender, const CRect& rcWBounds );
рисует на DC.

pulmo

есть массив точек RGBRGBRGB, т.е. по 24 бита на пиксел(у меня в примере изображение черно-белое, но пусть, для простоты - цветное).
У меня есть одна функция которая этот массив изменяет (включая размер, но бит/пиксел = const = 24 а в onDraw мне надо этот массив на экран вывести, View наследовано от CSrollView (но это наверное не так важно). Вот. CBitmap еще заполнить надо...
когда делаю:
m_pBitmap = new CBitmap;
m_pBitmap->CreateBitmap(Image->width,Image->height,1,8,Image->m_Picture);
виснет нахрен (на каждый пиксел у меня было по 1 байту)

naska79

Размеры массива байтов Image->m_Picture должен быть
(Image->width) * (Image->height).
Проверь. Просто в том варианте, что ты написал в первом посте цвет не зависит от i - получаются вертикальные линии и размер массива = x (а для битмапа должен быть x*y). И виснет наверно из-за выхода за пределы массива.

naska79

+ немного инфы о битмапах под винды, может пригодится:

Dasar

посмотри как у меня Fractal выводится

pulmo

от этого толку мало, формат бмп я и пишу руками и читаю его...
то : как в сети появишься так сразу и посмотрю

LionTG

Если нужно до субботы, то завтра скжу как, сейчас спать ложусь иначе умру. Через BitBlt просто. А вообще смотри www.codeproject.com и www.codeguru.com.

LionTG

а что за прогу ты пишешь?

pulmo

она типа картинки дожна вейвлет преобразованиям подвергать, а вообще это вопрос насущный. Я на машграфике, толку от лекций и семинаров мало, а проги писать приходится. Думаю до субботы оно спокойно подождет, попробую другую часть проги поделать. И инета нету...
Оставить комментарий
Имя или ник:
Комментарий: