scanline 方法的使用

    技术2022-05-20  53

    声明: property scanline[row: integer]: pointer  read  getscanline ;(只读)

    //以下函数把位图变也灰度(可调节)procedure graybitmap(abitmap: tbitmap; value: integer=0);var  pixel: prgbtriple;    //用来接收返回值  w, h: integer;  x, y: integer;  avg: integer;begin  abitmap.pixelformat := pf24bit;  w := abitmap.width;  h := abitmap.height;    for y := 0 to h - 1 do  begin    pixel := abitmap.scanline[y];    for x := 0 to w - 1 do    begin      avg := ((pixel^.rgbtred + pixel^.rgbtgreen + pixel^.rgbtblue) div 3)+ value;      if avg > 240 then avg := 240;      pixel^.rgbtred := avg;      pixel^.rgbtgreen := avg;      pixel^.rgbtblue := avg;      inc(pixel);    end;  end;end;

    附定义:  prgbtriple = ^trgbtriple;

    trgbtriple = tagrgbtriple;tagrgbtriple = packed record    rgbtblue: byte;    rgbtgreen: byte;    rgbtred: byte;end;


    最新回复(0)