Форум: "Игры";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
ВнизРазбираю пример... Найти похожие ветки
← →
Yanis © (2006-01-21 17:39) [0]на OpenGL из книги М. Краснова. Ch2 Ex43. Там приводится пример загрузки битмапа. Код такой:
procedure TfrmGL.MakeImage;
var
i, j: Integer;
PixCol: TColor;
Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile("Claudia.bmp");
for i := 0 to ImageHeight - 1 do
for j := 0 to ImageWidth - 1 do
begin
PixCol := Bitmap.Canvas.Pixels[j, i];
Image[ImageHeight - i - 1][j][0] := PixCol and $FF;
Image[ImageHeight - i - 1][j][1] := (PixCol and $FF00) shr 8;
Image[ImageHeight - i - 1][j][2] := (PixCol and $FF0000) shr 16;
end;
Bitmap.Free;
end;
Просто для себя решил его переделать на такой:
procedure TfrmGL.MakeImage;
var
i, j: Integer;
PixCol: TColor;
Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile("Claudia.bmp");
for i := 0 to ImageHeight - 1 do
begin
P := Bitmap.ScanLine[i];
for j := 0 to ImageWidth - 1 do
begin
Image[ImageHeight - i - 1][j][0] := P[j] and $FF;
Image[ImageHeight - i - 1][j][1] := (P[j] and $FF00) shr 8;
Image[ImageHeight - i - 1][j][2] := (P[j] and $FF0000) shr 16;
end;
end;
Bitmap.Free;
end;
Но почему то картинка отображается некорректно. Немогу понять почему. Подскажите пожлуйста как исправить.
← →
Yanis © (2006-01-21 17:43) [1]К стати P глобальная переменная типа PByteArray. (подсмотрел в справке по ScanLine)
← →
П7 (2006-01-21 17:59) [2]Потому, что P : PByteArray, а PixCol : Integer.
← →
XProger © (2006-01-21 18:02) [3]Bitmap.PixelFormat чему равен хоть?
← →
Кефир87 © (2006-01-21 18:15) [4]ИМХО не самая удачная реализация загрузки битмапа 8)
← →
Yanis © (2006-01-21 18:33) [5]
> Bitmap.PixelFormat чему равен хоть?
Ord(Bitmap.PixelFormat) выводит 3, т.е. pf8bit. (?)
← →
XProger © (2006-01-21 19:47) [6]
type TRGB = array [0..1] of record R, G, B: Byte; end;
var p : ^TRGB;
...
Bitmap.LoadFromFile("Claudia.bmp");
Bitmap.PixelFormat := pf24bits;
...
Image[ImageHeight - i - 1][j][0] := P[j].B;
Image[ImageHeight - i - 1][j][1] := P[j].G;
Image[ImageHeight - i - 1][j][2] := P[j].R;
← →
Yanis © (2006-01-22 01:16) [7]2 XProger [6]
Спасибо. Теперь всё работает. Просто хотел разобраться.
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.051 c