为什么把TBitmap设置为Monochrome图像就变成全黑了。(100分)

  • 主题发起人 陈冲伟
  • 开始时间

陈冲伟

Unregistered / Unconfirmed
GUEST, unregistred user!
我用Image控件载入一个TBitMap文件,然后希望将该图转换为黑白,令
TBitMap(Image.Picture.Graphic).Monochrome := True;
结果图像变成全黑,请问如何解决?
 
是转换为黑白两色,从文档中看Monochrome设置为True应该可以的呀。
 
我为你做好了,你的问题在于利用Monochrome将彩色位图转换为黑白位图时,将丢失
大量的颜色信息,所以你首先应该转换为灰度图,再转换为16色图,最后才是2色图!
procedure TForm1.Button1Click(Sender: TObject);
var
p: PByteArray;
w: Integer;
i, j: Integer;

begin
image1.Picture.LoadFromFile('e:/图片/end004.bmp');
image1.Picture.bitmap.pixelformat := pf24bit;
for i := 0 to image1.Picture.bitmap.height - 1 do
begin
p := image1.Picture.bitmap.scanline;
for j :=0 to image1.Picture.bitmap.width-1 do
begin
w :=(p[3*j] * 28 + p[3*j+1] * 151 + p[3*j+2]*77);//转换为灰度图
w := w shr 6;
p[3*j] := byte(w);
p[3*j+1] := byte(w);
p[3*j+2] := byte(w);
end;
end;
image1.Picture.bitmap.pixelformat := pf4bit;//转换为16色图
image1.Picture.bitmap.Monochrome:=true;//转换为2色图
end;
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部