Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.06.07;
Скачать: CL | DM;

Вниз

отрисовка в image   Найти похожие ветки 

 
Kos ©   (2009-04-03 21:04) [0]

Подскажите, пожалуйста, как можно отобразить на Image быстро и корректно? Имеется матрица со значениями цветов RGB, известна ширина, высота картинки. С помощью Image.Canvas.Pixels[i,j] долго, а с помощью API функции SetDIBits иногда Canvas белого цвета, глючная функция. Есть другие методы?


 
Игорь Шевченко ©   (2009-04-03 21:11) [1]

есть. заполнять битмап в памяти и выполнять bitblt. Примерно так работает doublebuffering


 
KilkennyCat ©   (2009-04-03 21:17) [2]

Есть еще статья http://www.delphimaster.ru/articles/pixels/index.html


 
Игорь Шевченко ©   (2009-04-03 21:27) [3]


> с помощью API функции SetDIBits иногда Canvas белого цвета,
>  глючная функция


Надеюсь, Microsoft извещен о том, что сделал глючную функцию и должен возместить моральный ущерб ?


 
KilkennyCat ©   (2009-04-03 21:35) [4]

Моральный, потому что белывй цвет - цвет траура. В Японии (или Китае, вообщем - там).


 
Kos ©   (2009-04-23 20:40) [5]

Приведу пример кода, может подскажет кто, что не так? Вот если размер изображения не превышает размера image, то изображение отображается, если превышает, то image белый, Bitmap пустой. Возможно, надо память выделить под BitMap. Матрица arraycolor заполнена правильно.


BM : TBitmap;
DC : HDC;
HB : HBitmap;
Bi : PBitmapInfo;
arraycolor : array of integer;

 BM := TBitmap.Create;
 DC:=GetDC(Form1.Handle);
 BM.Height := h;
 BM.Width := w;
 image1.Picture.Bitmap.Height := h;
 image1.Picture.Bitmap.Width := w;
 HB:= BM.Handle;
 GetMem(Bi,sizeof(TBitmapInfoheader));

 Bi^.bmiHeader.biSize:= sizeof(bi.bmiHeader);
 Bi^.bmiHeader.biWidth:= w;
 Bi^.bmiHeader.biHeight:= h;
 Bi^.bmiHeader.biPlanes:= 1;
 Bi^.bmiHeader.biBitCount:= 32;
 Bi^.bmiHeader.biCompression:= BI_RGB;
 Bi^.bmiHeader.biSizeImage:= 0;
 Bi^.bmiHeader.biClrUsed:= 0;
 Bi^.bmiHeader.biClrImportant:= 1;

 SetDIBits(DC,HB,0,h,arraycolor,Bi^,DIB_RGB_COLORS);

 BM.Canvas.Refresh;
 Image1.Picture.Bitmap.Assign(BM);
 image1.Invalidate;



Страницы: 1 вся ветка

Текущий архив: 2009.06.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
11-1176366189
Dmitry___
2007-04-12 12:23
2009.06.07
Курсорные клавиши в Memo на форме внутри dll


15-1238666073
Petrovsky
2009-04-02 13:54
2009.06.07
Форматирование чисел в MS Word


2-1240393863
IceBeerg
2009-04-22 13:51
2009.06.07
TStringList...IndexOf и Find


15-1238877001
Юрий
2009-04-05 00:30
2009.06.07
С днем рождения ! 5 апреля 2009 воскресенье


15-1238693439
palva
2009-04-02 21:30
2009.06.07
Бесплатный хостинг fatal.ru возобновил регистрацию