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