如何改变系统的颜色数,例如把256色改为真彩32位色(200分)

  • 主题发起人 主题发起人 lkxue
  • 开始时间 开始时间
列出系统支持的显示模式和颜色数:

procedure GetVideoModes(ModeList: TStringList);

var
i, j: integer;
MoreModes,
AddMode: boolean;
dm: TDeviceMode;
Mode: string;
begin
ModeList.Clear;
MoreModes := True;
Mode :=' ';
i := 0;
while MoreModes do
begin
MoreModes := EnumDisplaySettings(nil, i, dm);
Mode := IntToStr(dm.dmBitsPerPel) + ' Bits Per Pixel ' +
IntToStr(dm.dmPelsWidth) + ' x ' +
IntToStr(dm.dmPelsHeight);
AddMode := True;
{ Check to make sure this mode is not already in the list. }
for j := 0 to ModeList.Count-1 do
if Mode = ModeList[j] then
AddMode := False;
if AddMode then
ModeList.Add(Mode);
Inc(i);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
ss :TStringList;
num,i :Integer;
begin
ss :=TStringList.Create;
GetVideoModes(ss);
num :=ss.Count;
for i :=0 to num-1 do
Memo1.Lines.Add(ss.Strings);
ss.Free;
end;
 
给你一个函数:
例如: ChangeScreenSize(800, 600, 75, 32); // 800 X 600,75HZ,32位颜色
function ChangeScreenSize(Width, Height, Frequency, BitsPerpel : Integer) : Boolean;
var
DevMode : TDevMode;
begin
Result := True;
EnumDisplaySettings(Nil, 0, DevMode);
with DevMode do
begin
dmPelsWidth := Width; // 宽度
dmPelsHeight := Height; // 高度
dmDisplayFrequency := Frequency; // 扫描频率
dmBitsPerpel := BitsPerpel; // 颜色
try
ChangeDisplaySettings(DevMode, 0);
except
Result := False;
end;
end;
end;
 
16位和32位色可以直接输,256色的参数是???
 
256色的参数是8。
请我给你的EMAIL,我在“问题:我的硬盘中了逻辑锁了,帮帮忙!
来自:TDA2822M, 时间:2002-4-18 21:07:00, ID:1052848 ”看到你的答复,
所以想跟你请教。我的EMAIL是cds27@sina.com
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
922
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部