Форум: "KOL";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
ВнизPbitmap.ScanLine не работает! Найти похожие ветки
← →
Ал (2002-11-16 23:25) [0]Уважаемые мастера!
При использовании KOL, Pbitmap и Pbitmap.ScanLine
возникает ошибка RuntimeError 255 на операторе ScanLine.
Пробовал вместе с KOL подключить VCL Graphics и использовать Tbitmap.ScanLine – все работает.
Вот код KOL:
procedure TForm_Main.Button1Click(Sender: PObj);
var
Bitmap : PBitmap;
BitmapArray : array of PByteArray;
x, y : Integer;
begin
Bitmap := NewBitmap(0, 0);
// 24 bit.
Bitmap.LoadFromFile("bitmap.bmp");
SetLength(BitmapArray, Bitmap.Height);
for y := 0 to Bitmap.Height - 1 do
BitmapArray[y] := Bitmap.ScanLine[y];
for x := 0 to Bitmap.Width - 1 do
begin
BitmapArray[y, x*3+2] := 255;
BitmapArray[y, x*3+1] := 255;
BitmapArray[y, x*3] := 255;
end;
end;
Кто-нибудь что-нибудь подскажет?
← →
Bartov (2002-11-17 00:28) [1]Не знай, но еще при SaveToFile начиная с 256 цветов и более -
всегда сохраняется рисунок в 16 цветах.
← →
SPeller (2002-11-17 05:00) [2]У тебя двумерный массив BitmapArray[i,j]. Размерность по i ты задаёшь SetLength(BitmapArray, Bitmap.Height), а про вторую рамерность ты совсем забыл. На вышеуказанной строке у тебя делается массив указателей на байтовые массивы, однако сами массивы у тебя не созданы.
Один из выходов - записать в объявлениях BitmapArray : array of ТByteArray, но тогда ошибка вылезет если у тебя строка развёртки (ScanLine) будет длиннее 256 байт.
> Не знай, но еще при SaveToFile начиная с 256 цветов и более
> - всегда сохраняется рисунок в 16 цветах.
Может, это результат оптимизации? Если количество реально использованных цветов <= 16, то битмап и записывается в 16-цветном формате без потери цвета.
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.007 c