继续寻求解答......关于256色位图处理:如何用已取得的卫星云图的二进制位图数据生成一张新位图,并保存输出到磁盘上? ( 积分: 300 )

  • 主题发起人 主题发起人 山东好汉
  • 开始时间 开始时间
《Delphi Win32核心API参考》中的代码有个缺陷:只能工作在256色模式下面[:(]
 
BitmapInfo.bmBitsPixel := 8; // 8 bits/pixel, a 256 color bitmap

m_Bitmap.bmBitsPixel = 16;

设置了不可以?
 
原作者代码注释:
{Note: This example works correctly only under a 256 color video driver}
也就是说只能工作在256色显示器驱动程序下面,我试验了一下,只有将显示器设置成256色,这个程序才能工作。
如何能在任意真彩色显示器上工作呢?而且无法保存输出图像[:(]
 
你测过了?确实不行?但是C是同样的代码,没有任何问题,界面做出来很漂亮,不过另外有用了一个函数SetDIBitsToDevice,考虑一下吧,不多说了[:)]
 
var
l:TmemoryStream;
s: TfileStream;==>云图文件
bitmap:tbitmap;

bitmap:=tbitmap.Create ;
l:= TmemoryStream.create;
s:= TfileStream.Create();
bitmap.PixelFormat :=pf8bit;
bitmap.Width :=云图长 ;
bitmap.Height :=云图宽
bitmap.savetostream(l);
bitmap.free;
写入自己定义的调色板
for i:=(云图宽-1) downto 0 do // 读取字节
begin
l.Seek(1078+云图长*i, soFromBeginning); //定位
l.CopyFrom (s,云图长);
end;
l.Seek(0, soFromBeginning); //定位
image1.Picture.Bitmap.LoadFromStream(l);
l.free;
 
非常感谢!啊啊啊啊啊
 
多人接受答案了。
 

Similar threads

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