procedure Grayscale(const Bitmap:TBitmap); var X: Integer; Y: Integer; PRGB: pRGBTriple; Gray: Byte; begin for Y := 0 to (Bitmap.Height - 1) do begin PRGB := Bitmap.ScanLine[Y]; for X := 0 to (Bitmap.Width - 1) do begin Gray := Trunc(0.3 * PRGB^.rgbtRed + 0.59 * PRGB^.rgbtGreen + 0.11 * PRGB^.rgbtBlue); PRGB^.rgbtRed:=Gray; PRGB^.rgbtGreen:=Gray; PRGB^.rgbtBlue:=Gray; Inc(PRGB); end; end; end; 这个是转换为灰度的,你只要把符合条件的颜色用Gray=0,代替掉就是黑色了,转换后另存为文件也可
>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
var
X: Integer;
Y: Integer;
PRGB: pRGBTriple;
Gray: Byte;
begin
for Y := 0 to (Bitmap.Height - 1) do
begin
PRGB := Bitmap.ScanLine[Y];
for X := 0 to (Bitmap.Width - 1) do
begin
Gray := Trunc(0.3 * PRGB^.rgbtRed + 0.59 * PRGB^.rgbtGreen + 0.11 * PRGB^.rgbtBlue);
PRGB^.rgbtRed:=Gray;
PRGB^.rgbtGreen:=Gray;
PRGB^.rgbtBlue:=Gray;
Inc(PRGB);
end;
end;
end;
这个是转换为灰度的,你只要把符合条件的颜色用Gray=0,代替掉就是黑色了,转换后另存为文件也可
如果是圆心的位置,那么加上半径,则可以知道圆围上的每个像素点的坐标(x,y)
不管图像是用TBitmap,TGpbitmap,tbitmap32还是别的载的
得到它的hdc
用gdi函数GetPixel(HDC,X,Y)得到像素
用SetPixel(HDC,X,Y)设置像素
最后大侠多给点分,扶持小菜成长