为什么在2000下显示全白的程序,在98下显示全黑? ( 积分: 28 )

  • 主题发起人 主题发起人 bbcock
  • 开始时间 开始时间
B

bbcock

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序就是创建一个bitmap,然后在image上显示,在2000下显示正常(全白),但在98下显示确是全黑,这是怎么回事?

var bitmap:tbitmap;
begin
bitmap:=tbitmap.Create ;
bitmap.PixelFormat :=pf8bit;
bitmap.Width :=1024;
bitmap.Height :=1300;
image1.Picture.Bitmap.Assign(bitmap);
end;
这样在2000,xp下图片显示为白色,在98下显示为黑色,只有这样
bitmap.Width :=1024;
bitmap.Height :=1300;
bitmap.PixelFormat :=pf8bit;
这几句交换位置,98下显示才为白色

请教大家为什么????
 
我的程序就是创建一个bitmap,然后在image上显示,在2000下显示正常(全白),但在98下显示确是全黑,这是怎么回事?

var bitmap:tbitmap;
begin
bitmap:=tbitmap.Create ;
bitmap.PixelFormat :=pf8bit;
bitmap.Width :=1024;
bitmap.Height :=1300;
image1.Picture.Bitmap.Assign(bitmap);
end;
这样在2000,xp下图片显示为白色,在98下显示为黑色,只有这样
bitmap.Width :=1024;
bitmap.Height :=1300;
bitmap.PixelFormat :=pf8bit;
这几句交换位置,98下显示才为白色

请教大家为什么????
 
不要设置颜色深度
 
可我就是要生成256色的bitmap啊
 
应该和你的顺序无关,和操作系统设置有关;

你可以尝试如此操作

Procedure TForm1.Button1Click(Sender: TObject);
Var
bitmap: tbitmap;
Begin
bitmap := tbitmap.Create;
bitmap.PixelFormat := pf8bit;
bitmap.Width := 104;
bitmap.Height := 130;
bitmap.Canvas.Brush.Color := clWhite; //初始化;
bitmap.Canvas.FillRect(bitmap.Canvas.ClipRect);
Image1.Picture.bitmap.Assign(bitmap);

End;

然后再试一试;
 
var bitmap:tbitmap;
begin
bitmap:=tbitmap.Create ;
bitmap.canvas.brush.color:=clWhite; // 任何你想要的颜色
bitmap.PixelFormat :=pf8bit;
bitmap.Width :=1024;
bitmap.Height :=1300;
image1.Picture.Bitmap.Assign(bitmap);
end;
 
和机器的颜色深度有关系,16色 和 32色中同一个数值会被解释为不同颜色。
常量:clRed,clGreen 等除外,是经过转换的。
 
那这样怎么写出适用于98,2000,xp不同操作系统,增强16色,24色,32色不同色彩度的程序呢?
 
半年多了,结贴
 
后退
顶部