本文整理自网络,侵删。
1、创建一个Mark图层
2、对覆盖区域进行行列扫描(使用背景色,设置透明)
PRGB = ^TRGB;
TRGB = record
b, g, r, a: Byte;
end;
PRGBArray = ^TRGBArray;
TRGBArray = array [0 .. 65565] of TRGB;
// use cMask image to remove overlaping rTab area
slPtr := Integer(cBmp.ScanLine[y1]);
slSize := Integer(cBmp.ScanLine[y1 + 1]) - slPtr;
slPtr2 := Integer(cMask.ScanLine[y1]);
slSize2 := Integer(cMask.ScanLine[y1 + 1]) - slPtr2;
if i > 0 then
begin
for h := y1 to y2 - 1 do
begin
Row := PRGBArray(slPtr);
Row2 := PRGBArray(slPtr2);
for w := 0 to FTabOverLap - 1 do
if Row2[w + (FTabWidth - FTabOverLap) + 1].g <> 0 then
begin
Row[w + x1].r := Byte(FColorBackground);
Row[w + x1].g := Byte(FColorBackground shr 8);
Row[w + x1].b := Byte(FColorBackground shr 16);
Row[w + x1].A := 0;
end;
slPtr := slPtr + slSize;
slPtr2 := slPtr2 + slSize2;
end;
end;
// overlaping rTab area cleared
相关阅读 >>
Delphi ansiendstext 用法之一(路径结尾自动加\)
更多相关阅读请进入《Delphi》频道 >>