Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];

Вниз

Использование SetBitmapBits с динамическим массивом   Найти похожие ветки 

 
novarm44   (2002-10-12 01:33) [0]

При подстановке в SetBitmapBits матрицы с фиксированным количеством столбцов и рядов все работает без проблем, а при использовании:

var PixelMat:array of array of TColor;
...
SetBitmapBits (Form1.Image1.Picture.Bitmap.Handle,length(rmat)*length(rmat[0])*3,@PixelMat);
Form1.Image1.Refresh;
//sizeof в таком случае не работает


выводит белый экран

При подстановке PixelMat вместо @PixelMat начинает выводить бред всякий.


 
PVOzerski   (2002-10-12 05:16) [1]

Точно не знаю, но есть подозрение. Динамический 2-мерный массив на самом деле
есть не что иное как структура, один из элементов которой - указатель на блок
памяти, заполненный структурами, содержащими, в частности, указатели на блоки памяти,
заполненные данными (tColor в Вашем случае). Как видите, внутренняя организация его
радикально отличается от таковой статического 2-мерного массива, так "бред" закономерен.
Я бы попробовал переделать массив в 1-мерный (рассчитывать столбцы и строки вручную,
по смещению) и передавать в SetBitmapBits адрес 0-го элемента. А то и вообще плюнуть
на эти навороты поздних версий Delphi и работать через GetMem :^)



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

Форум: "Основная";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.008 c
1-78341
novarm44
2002-10-12 01:33
2002.10.24
Использование SetBitmapBits с динамическим массивом


1-78450
pirat
2002-10-12 02:53
2002.10.24
Получение адреса процедуры из процедурной переменной


1-78436
Alex_Sudakov
2002-10-10 11:07
2002.10.24
Переключение раскладки


4-78715
pasha_golub
2002-09-10 19:07
2002.10.24
FindChangeNotification


1-78419
Just_Dont_Know
2002-10-15 17:12
2002.10.24
Как превратить TEdit в удобный для ввода времени





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский