由于二值图点的RGB是0或者255,可以根据一个点A的RGB值 与周围的8个点的RBG 比较 设定一个值N(0 附上一段代码 没具体测试。
var
piexl : tcolor;
nearDots,x,y,RGBz : integer;
begin
bitmap.Canvas.Pixels[
0
,
0
]:
=
rgb(
255
,
255
,
255
);
bitmap.Canvas.Pixels[bitmap.Width
-
1
,bitmap.Height
-
1
]:
=
rgb(
255
,
255
,
255
);
for
x :
=
1
to
bitmap.Width
-
2
do
for
y :
=
1
to
bitmap.Height
-
2
do
begin
piexl :
=
bitmap.Canvas.Pixels[x,y];
RGBz :
=
getrvalue(piexl);
if
(RGBz
=
0
)
then
begin
nearDots :
=
0
;
//
判断周围8个点RGB是否相等
if
(getrvalue(bitmap.Canvas.Pixels[x
-
1
, y
-
1
])
=
RGBz)
then
nearDots:
=
nearDots
+
1
;
if
(getrvalue(bitmap.Canvas.Pixels[x, y
-
1
])
=
RGBz)
then
nearDots:
=
nearDots
+
1
;
if
(getrvalue(bitmap.Canvas.Pixels[x
+
1
, y
-
1
])
=
RGBz)
then
nearDots:
=
nearDots
+
1
;
if
(getrvalue(bitmap.Canvas.Pixels[x
-
1
, y])
=
RGBz)
then
nearDots:
=
nearDots
+
1
;
if
(getrvalue(bitmap.Canvas.Pixels[x
+
1
, y])
=
RGBz)
then
nearDots:
=
nearDots
+
1
;
if
(getrvalue(bitmap.Canvas.Pixels[x
-
1
, y
+
1
])
=
RGBz)
then
nearDots:
=
nearDots
+
1
;
if
(getrvalue(bitmap.Canvas.Pixels[x, y
+
1
])
=
RGBz)
then
nearDots:
=
nearDots
+
1
;
if
(getrvalue(bitmap.Canvas.Pixels[x
+
1
, y
+
1
] )
=
RGBz)
then
nearDots:
=
nearDots
+
1
;
if
(nearDots
<
N)
then
bitmap.Canvas.Pixels[x,y]:
=
rgb(
255
,
255
,
255
)
end
else
bitmap.Canvas.Pixels[x,y]:
=
rgb(
255
,
255
,
255
);
end
;
end
;