亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bseffects.pas

?? 一套支持Delphi的VCL庫
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
       Line^[x].r := r;
       Line^[x].g := g;
       Line^[x].b := b;
     end;
     ScanLines[y] := Line;
     kf1 := kf1 + Step;
     if kf1 > 1 then kf1 := 1;
   end;

  FreeMem(Line, Width * 3);
end;

procedure TbsEffectBmp.MorphGrad;
begin
  if Width >= Height
  then MorphHGrad(BMP, kf)
  else MorphVGrad(BMP, kf);
end;

procedure TbsEffectBmp.MorphLeftGrad;
var
  x, y, r, g, b: Integer;
  Line, L: PLine;
  kf1: Double;
  step: Double;
  f : Integer;
begin
  if (BMP.Width <> Width) or (BMP.Height <> Height) then Exit;

  GetMem(Line, Width * 3);

  f := Round(Width * kf);
  if f < 1 then f := 1;
  if f > Width - 1 then f := Width - 1;

  if f > 0
  then
    Step := 1 / f
  else
    Step := 1;

  for y := 0 to Height - 1 do
  begin
    GetScanLine(y,Line);
    L := BMP.ScanLines[y];
    kf1 := 0;
    for x := 0 to f do
    begin
      r := Round(Line^[x].r * kf1 + L^[x].r * (1 - kf1));
      g := Round(Line^[x].g * kf1 + L^[x].g * (1 - kf1));
      b := Round(Line^[x].b * kf1 + L^[x].b * (1 - kf1));
      CheckRGB(r, g, b);
      Line^[x].r := r;
      Line^[x].g := g;
      Line^[x].b := b;
      kf1 := kf1 + Step;
      if kf1 > 1 then kf1 := 1;
     end;
     ScanLines[y] := Line;
   end;

  FreeMem(Line, Width * 3);
end;

procedure TbsEffectBmp.MorphRightGrad;
var
  x, y, r, g, b: Integer;
  Line, L: PLine;
  kf1: Double;
  step: Double;
  f : Integer;
begin
  if (BMP.Width <> Width) or (BMP.Height <> Height) then Exit;

  GetMem(Line, Width * 3);

  f := Width - Round(Width * kf);
  if f < 0 then f := 0;
  if f > Width - 1 then f := Width - 1;

  if Width - f > 0
  then
    Step := 1 / (Width - f)
  else
    Step := 1;

  for y := 0 to Height - 1 do
  begin
    GetScanLine(y,Line);
    L := BMP.ScanLines[y];
    kf1 := 0;
    for x := Width - 1 downto f do
    begin
      r := Round(Line^[x].r * kf1 + L^[x].r * (1 - kf1));
      g := Round(Line^[x].g * kf1 + L^[x].g * (1 - kf1));
      b := Round(Line^[x].b * kf1 + L^[x].b * (1 - kf1));
      CheckRGB(r, g, b);
      Line^[x].r := r;
      Line^[x].g := g;
      Line^[x].b := b;
      kf1 := kf1 + Step;
      if kf1 > 1 then kf1 := 1;
     end;
     ScanLines[y] := Line;
   end;
  FreeMem(Line, Width * 3);
end;

procedure TbsEffectBmp.MorphPush(BMP: TbsEffectBMP; Kf: Double);
var
  x, y, x1: Integer;
  Line, L: PLine;
  f : Integer;
begin
  if (BMP.Width <> Width) or (BMP.Height <> Height) then Exit;

  GetMem(Line, Width * 3);

  f := Round(Width * kf);
  if f < 0
  then f := 0
  else if f > Width - 1 then f := Width - 1;

  for y := 0 to Height - 1 do
  begin
    GetScanLine(y,Line);
    L := BMP.ScanLines[y];
    for x := Width - 1 downto f do
    begin
      x1 := x - f - 1;
      if x1 < 0 then x1 := 0;
      Line^[x].r := Line^[x1].r;
      Line^[x].g := Line^[x1].g;
      Line^[x].b := Line^[x1].b;
     end;
     ScanLines[y] := Line;
   end;           

  for y := 0 to Height - 1 do
  begin
    GetScanLine(y,Line);
    L := BMP.ScanLines[y];
    x1 := Width - f - 1;
    if x1 < 0 then x1 := 0;
    for x := 0 to f do
    begin
      Line^[x].r := L^[x1].r;
      Line^[x].g := L^[x1].g;
      Line^[x].b := L^[x1].b;
      inc(x1);
      if x1 > Width - 1 then x1 := Width - 1;
    end;
    ScanLines[y] := Line;
  end;

  FreeMem(Line, Width * 3);
end;

procedure TbsEffectBmp.MorphLeftSlide;
var
  x, y, x1: Integer;
  Line, L: PLine;
  f : Integer;
begin
  if (BMP.Width <> Width) or (BMP.Height <> Height) then Exit;

  GetMem(Line, Width * 3);

  f := Round(Width * kf);
  if f < 1 then f := 1;
  if f > Width - 1 then f := Width - 1;
  for y := 0 to Height - 1 do
  begin
    GetScanLine(y,Line);
    L := BMP.ScanLines[y];
    x1 := Width - 1 - f;
    if x1 < 0 then x1 := 0;
    for x := 0 to f - 1 do
    begin
      inc(x1);
      if x1 > Width -1 then x1 := Width - 1;
      Line^[x].r := L^[x1].r;
      Line^[x].g := L^[x1].g;
      Line^[x].b := L^[x1].b;
    end;
    ScanLines[y] := Line;
  end;

  FreeMem(Line, Width * 3);
end;

procedure TbsEffectBmp.MorphRightSlide;
var
  x, y, x1: Integer;
  Line, L: PLine;
  f : Integer;
begin
  if (BMP.Width <> Width) or (BMP.Height <> Height) then Exit;

  GetMem(Line, Width * 3);

  f := Round(Width * kf);
  if f < 1 then f := 1;
  if f > Width - 1 then f := Width - 1;

  for y := 0 to Height - 1 do
  begin
    GetScanLine(y,Line);
    L := BMP.ScanLines[y];
    x1 := Width - 1 - f;
    if x1 < 0 then x1 := 0;
    for x := 0 to f - 1 do
    begin
      inc(x1);
      if x1 > Width -1 then x1 := Width - 1;
      Line^[x1].r := L^[x].r;
      Line^[x1].g := L^[x].g;
      Line^[x1].b := L^[x].b;
    end;
    ScanLines[y] := Line;
  end;

  FreeMem(Line, Width * 3);
end;

destructor TbsEffectBmp.Destroy;
begin
  DeleteObject(Handle);
  inherited;
end;

procedure TbsEffectBmp.ChangeBrightness(Kf: Double);
var
  x, y, r, g, b: Integer;
  Line: PLine;
begin
  if Kf < 0 then Kf := 0 else if Kf > 1 then Kf := 1;
  GetMem(Line, Width * 3);
  for y := 0 to Height - 1 do
  begin
    GetScanLine(y, Line);
    for x := 0 to Width - 1 do
    begin
      r := Round(Line^[x].r * (1 - Kf) + 255 * Kf);
      g := Round(Line^[x].g * (1 - Kf) + 255 * Kf);
      b := Round(Line^[x].b * (1 - Kf) + 255 * Kf);
      CheckRGB(r, g, b);
      Line^[x].r := r;
      Line^[x].g := g;
      Line^[x].b := b;
    end;
    ScanLines[y] := Line;
  end;
  FreeMem(Line, Width * 3);
end;

procedure TbsEffectBmp.Invert;
var
  x, y, r, g, b: Integer;
  Line: PLine;
begin
  GetMem(Line, Width * 3);
  for y := 0 to Height - 1 do
  begin
    GetScanLine(y, Line);
    for x := 0 to Width - 1 do
    begin
      r := not Line^[x].r;
      g := not Line^[x].g;
      b := not Line^[x].b;
      CheckRGB(r, g, b);
      Line^[x].r := r;
      Line^[x].g := g;
      Line^[x].b := b;
    end;
    ScanLines[y] := Line;
  end;
  FreeMem(Line, Width * 3);
end;


procedure TbsEffectBmp.ChangeDarkness(Kf: Double);
var
  x, y, r, g, b: Integer;
  Line: PLine;
begin
  if Kf < 0 then Kf := 0 else if Kf > 1 then Kf := 1;
  GetMem(Line, Width * 3);
  for y := 0 to Height - 1 do
  begin
    GetScanLine(y, Line);
    for x := 0 to Width - 1 do
    begin
      r := Round(Line^[x].r * (1 - Kf));
      g := Round(Line^[x].g * (1 - Kf));
      b := Round(Line^[x].b * (1 - Kf));
      CheckRGB(r, g, b);
      Line^[x].r := r;
      Line^[x].g := g;
      Line^[x].b := b;
    end;
    ScanLines[y] := Line;
  end;
  FreeMem(Line, Width * 3);
end;

procedure TbsEffectBmp.GrayScale;
var
  x, y: Integer;
  Line: PLine;
  Gray: Byte;
begin
  GetMem(Line, Width * 3);
  for y := 0 to Height - 1 do
  begin
    GetScanLine(y, Line);
    for x := 0 to Width - 1 do
    begin
      Gray := Round(Line^[x].r * 0.3 + Line^[x].g * 0.59 + Line^[x].b * 0.11);
      if Gray > 255 then Gray := 255 else if Gray < 0 then Gray := 0;
      Line^[x].r := Gray;
      Line^[x].g := Gray;
      Line^[x].b := Gray;
    end;
    ScanLines[y] := Line;
  end;
  FreeMem(Line, Width * 3);
end;

procedure TbsEffectBmp.SplitBlur(Amount: Integer);
var
  cx, x, y: Integer;
  L, L1, L2: PLine;
  Buf: array[0..3] of TFColor;
  Tmp: TFColor;
begin
  if Amount = 0 then Exit;
  for y := 0 to Height-1 do
  begin
    L := ScanLines[y];
    if y - Amount < 0
    then L1:=ScanLines[y]
    else L1:=ScanLines[y - Amount];
    if y + Amount < Height
    then L2:=ScanLines[y + Amount]
    else L2:=ScanLines[Height - y];
    for x := 0 to Width - 1 do
    begin
      if x - Amount < 0 then cx := x else cx := x - Amount;
      Buf[0] := L1[cx];
      Buf[1] := L2[cx];
      if x + Amount < Width then cx := x + Amount else cx := Width - x;
      Buf[2] := L1^[cx];
      Buf[3] := L2^[cx];
      Tmp.r := (Buf[0].r + Buf[1].r + Buf[2].r + Buf[3].r) div 4;
      Tmp.g := (Buf[0].g + Buf[1].g + Buf[2].g + Buf[3].g) div 4;
      Tmp.b := (Buf[0].b + Buf[1].b + Buf[2].b + Buf[3].b) div 4;
      L^[x] := Tmp;
    end;
  end;
end;

procedure TbsEffectBmp.Mosaic(ASize: Integer);
var
  x, y, i, j : Integer;
  L1, L2: PLine;
  r, g, b : Byte;
begin
  y := 0;
  repeat
    L1 := Scanlines[y];
    x := 0;
    repeat
      j := 1;
      repeat
      L2 := Scanlines[y];
      x := 0;
      repeat
        r := L1[x].r;
        g := L1[x].g;
        b := L1[x].b;
        i:=1;
       repeat
       L2[x].r := r;
       L2[x].g := g;
       L2[x].b := b;
       inc(x);
       inc(i);
       until (x >= Width) or (i > ASize);
      until x >= Width;
      inc(j);
      inc(y);
      until ( y >= Height) or (j > ASize);
    until (y >= Height) or (x >= Width);
  until y >= Height;
end;


procedure TbsEffectBmp.AddMonoNoise(Amount:Integer);
var
  x,y,r,g,b,z: Integer;
  Line: PLine;
begin
  GetMem(Line, Width * 3);
  for y := 0 to Height - 1 do
  begin
    GetScanLine(y,Line);
    for x:=0 to Width-1 do
    begin
      z := Random(Amount) - Amount div 2;
      r := Line^[x].r + z;
      g := Line^[x].g + z;
      b := Line^[x].b + z;
      CheckRGB(r, g, b);
      Line^[x].r := r;
      Line^[x].g := g;
      Line^[x].b := b;
    end;
    ScanLines[y] := Line;
  end;
  FreeMem(Line, Width * 3);
end;

procedure TbsEffectBmp.AddColorNoise(Amount:Integer);
var
  x,y,r,g,b: Integer;
  Line: PLine;
begin
  GetMem(Line, Width * 3);
  for y := 0 to Height - 1 do
  begin
    GetScanLine(y,Line);
    for x:=0 to Width-1 do
    begin
      r := Line^[x].r + (Random(Amount) - (Amount div 2));
      g := Line^[x].g + (Random(Amount) - (Amount div 2));
      b := Line^[x].b + (Random(Amount) - (Amount div 2));
      CheckRGB(r, g, b);
      Line^[x].r := r;
      Line^[x].g := g;
      Line^[x].b := b;
    end;
    ScanLines[y] := Line;
  end;
  FreeMem(Line, Width * 3);
end;

procedure TbsEffectBmp.Rotate90_1(Dst: TbsEffectBmp);
var
  x, y: Integer;
begin
  for y := 0 to Height - 1 do
  for x := 0 to Width - 1 do
    Dst.Pixels[y, Width - 1 - x] := Pixels[x, y];
end;

procedure TbsEffectBmp.Rotate90_2(Dst: TbsEffectBmp);
var
  x, y: Integer;
begin
  for y := 0 to Height - 1 do
  for x := 0 to Width - 1 do
    Dst.Pixels[Height - 1 - y, x] := Pixels[x, y];
end;

procedure TbsEffectBmp.FlipVert;
var
  x, y: Integer;
begin
  for y := 0 to Height - 1 do
  for x := 0 to Width - 1 do
    Dst.Pixels[x, Height - 1 - y] := Pixels[x, y];
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人动漫精品| 欧美在线制服丝袜| 欧美性大战久久久久久久蜜臀| 欧美一级片在线观看| 亚洲三级视频在线观看| 国产精品影视天天线| 欧美日韩国产免费| 亚洲最快最全在线视频| 成人午夜精品在线| 久久久久久久综合狠狠综合| 亚洲高清免费在线| 日本韩国精品在线| 亚洲欧美韩国综合色| 成人毛片在线观看| 国产日韩欧美在线一区| 老司机免费视频一区二区三区| 在线观看成人小视频| 亚洲天堂成人在线观看| 国产不卡一区视频| 国产喷白浆一区二区三区| 国内精品国产三级国产a久久| 在线91免费看| 午夜精品成人在线| 欧美美女一区二区三区| 亚洲综合在线第一页| 色综合婷婷久久| 亚洲成人免费视频| 欧美综合一区二区| 亚洲国产精品久久久久婷婷884 | 青青国产91久久久久久| 欧美调教femdomvk| 午夜久久久久久| 欧美日韩成人综合| 欧美aaaaaa午夜精品| 日韩免费高清电影| 久久99精品网久久| 久久看人人爽人人| 成人激情文学综合网| 亚洲欧美一区二区三区孕妇| 一本久久综合亚洲鲁鲁五月天 | 欧美日韩免费在线视频| 亚瑟在线精品视频| 正在播放亚洲一区| 精品一区二区在线免费观看| 久久午夜羞羞影院免费观看| 国产精品资源在线| √…a在线天堂一区| 欧美三片在线视频观看| 久久99这里只有精品| 久久综合狠狠综合| 99精品热视频| 午夜成人免费电影| 国产婷婷色一区二区三区四区| 不卡的av在线播放| 婷婷久久综合九色综合绿巨人| 日韩视频免费观看高清完整版 | 久久97超碰国产精品超碰| 国产亚洲精品超碰| 色天使久久综合网天天| 美女视频一区二区三区| 精品国产精品一区二区夜夜嗨| 顶级嫩模精品视频在线看| 亚洲日本在线观看| 日韩一区二区免费电影| 不卡一区二区中文字幕| 日韩一区欧美二区| 日本一区二区成人| 欧美另类videos死尸| 成人免费视频视频在线观看免费 | 欧美人妇做爰xxxⅹ性高电影| 久久国产剧场电影| 一区二区三区在线视频免费 | 亚洲一级不卡视频| 欧美一区二区免费| 9i看片成人免费高清| 日本欧美加勒比视频| 成人免费一区二区三区视频| 日韩欧美不卡一区| 在线观看视频一区| 国产jizzjizz一区二区| 午夜电影一区二区三区| 亚洲男帅同性gay1069| 久久只精品国产| 欧美日韩一区视频| 97se狠狠狠综合亚洲狠狠| 久久av中文字幕片| 日韩不卡手机在线v区| 亚洲欧美日本在线| 日本一区二区免费在线| 欧美videos中文字幕| 欧美日本韩国一区| 在线欧美日韩国产| 91网站最新地址| 国产91在线观看| 狠狠色狠狠色综合日日91app| 亚洲韩国一区二区三区| 亚洲精品国产第一综合99久久| 国产亚洲制服色| 26uuu亚洲综合色欧美| 日韩欧美一级二级三级久久久| 欧美浪妇xxxx高跟鞋交| 精品视频123区在线观看| 91高清视频免费看| 91久久免费观看| 色成人在线视频| 日本高清免费不卡视频| 色偷偷久久人人79超碰人人澡| 粗大黑人巨茎大战欧美成人| 国产丶欧美丶日本不卡视频| 久久电影网站中文字幕| 久久99久久99| 精品一区二区三区免费| 国产自产高清不卡| 国产精品一区二区久久精品爱涩| 国产一区二区美女诱惑| 国产一区二区免费在线| 成人黄色国产精品网站大全在线免费观看| 国产九色精品成人porny| 国产成人在线视频播放| 成人免费毛片嘿嘿连载视频| 成人av资源在线观看| 色婷婷久久综合| 欧美色图在线观看| 欧美高清激情brazzers| 51久久夜色精品国产麻豆| 日韩精品中文字幕在线一区| www激情久久| 中文字幕中文字幕一区二区 | 亚洲国产成人午夜在线一区| 国产精品久久久久久久久久久免费看 | 在线电影国产精品| 日韩免费高清av| 国产精品国产精品国产专区不蜜| 亚洲色图制服诱惑| 日韩制服丝袜av| 国产精品一区不卡| 91视频在线观看免费| 在线观看av不卡| 精品理论电影在线| 最新成人av在线| 五月激情六月综合| 国产精品99久久不卡二区| aaa亚洲精品| 欧美一区二区三区婷婷月色| 久久久三级国产网站| 亚洲免费伊人电影| 久久99精品国产.久久久久| 成人av片在线观看| 欧美一区二区三区四区五区| 亚洲国产精品精华液2区45| 洋洋成人永久网站入口| 精品亚洲国内自在自线福利| 一本一本大道香蕉久在线精品| 欧美成人r级一区二区三区| 中文字幕亚洲视频| 精彩视频一区二区三区| 91九色最新地址| 亚洲精品在线电影| 亚洲国产日韩一区二区| 国产91精品一区二区麻豆亚洲| 欧美午夜精品久久久| 国产欧美日韩在线| 三级不卡在线观看| 91视频观看视频| 久久影院午夜片一区| 亚洲18影院在线观看| 91一区二区三区在线观看| 精品国产亚洲一区二区三区在线观看| 国产精品区一区二区三区| 美女视频黄久久| 欧美在线免费播放| 国产精品传媒入口麻豆| 国产一区二区免费在线| 日韩亚洲欧美一区| 舔着乳尖日韩一区| 在线观看日韩一区| 亚洲天堂2016| av电影一区二区| 国产欧美日韩激情| 九色综合狠狠综合久久| 欧美日韩成人在线| 亚洲影视资源网| 91久久精品一区二区三区| 国产精品短视频| 播五月开心婷婷综合| 久久精品欧美一区二区三区不卡 | 久久麻豆一区二区| 激情国产一区二区| 精品国产污污免费网站入口| 看电影不卡的网站| 欧美一区二区在线看| 日韩精品一卡二卡三卡四卡无卡| 欧美中文字幕不卡| 亚洲成人黄色小说| 色婷婷狠狠综合| 亚洲愉拍自拍另类高清精品| 色94色欧美sute亚洲线路二 | 欧美性做爰猛烈叫床潮| 亚洲福利视频一区二区| 欧美高清视频一二三区 |