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

Вниз

Разбираю пример...   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
2-1161021492
serko
2006-10-16 21:58
2006.10.29
NMHTTP


2-1160466247
yel
2006-10-10 11:44
2006.10.29
Сохраить свойства объекта


3-1157456213
Mishenka
2006-09-05 15:36
2006.10.29
Как в запросе сделать сортировку по нескольким полям?


15-1160238767
wp2
2006-10-07 20:32
2006.10.29
помогите кто может.


2-1160631958
Sergey_b
2006-10-12 09:45
2006.10.29
DLL