1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| program bmp;
uses GRX;
var BmpWidth, BmpHeight,fenetre : integer;
var grc,grcscreen,null2 : grcontextptr;
var null1 : MemPtr;
procedure Charger_Bmp(s : string);
var f : file of byte;
var color : array[1..4] of byte;
var x,y,z : integer;
begin
grcscreen:=grscreencontext;
assign(f,s);
reset(f);
seek(f,18);
read(f,color[1],color[2],color[3],color[4]);
BmpWidth:=color[1]+color[2]*256+color[3]*65536+color[4]*16777216;
z:=(BmpWidth mod 4);
read(f,color[1],color[2],color[3],color[4]);
BmpHeight:=color[1]+color[2]*256+color[3]*65536+color[4]*16777216;
grc:=grcreatecontext(BmpWidth,BmpHeight,null1,null2);
grsetcontext(grc);
seek(f,54);
for y:=BmpHeight downto 1 do begin
for x:=1 to BmpWidth do begin
read(f,color[1],color[2],color[3]);
grplot(x,y,gralloccolor(color[3],color[2],color[1]));
end;
for x:=1 to z do read(f,color[4]);
end;
grsetcontext(grcscreen);
end;
procedure Afficher_Bmp(x0,y0 : integer);
begin
grbitblt(grcscreen,x0,y0,grc,0,0,BmpWidth-1,BmpHeight-1,GrWRITE);
end;
begin
fenetre:=grsetmode(24,800,600,32,0,0);
Charger_Bmp('test.bmp');
Afficher_Bmp(0,0);
grkeyread;
end. |
Partager