游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3670|回复: 5

我怎么获得当前屏幕色深?

[复制链接]

65

主题

225

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
发表于 2003-9-8 20:12:00 | 显示全部楼层 |阅读模式
我怎么获得当前屏幕色深?
如果是16位色,我怎么知道是565,还是555?
谢谢了。

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20463
发表于 2003-9-8 23:02:00 | 显示全部楼层

Re:我怎么获得当前屏幕色深?

HWND hWnd = ::GetDesktopWindow();
HDC hDC = ::GetDC(hWnd);
m_lCurDevBitPix = GetDeviceCaps(hDC,BITSPIXEL);
::ReleaseDC(hWnd, hDC);
if(m_lCurDevBitPix != 16)                // no 16bit desktop
{
}

这里是HoHo的代码片断,用来获取桌面色彩。

16bit色彩的排列方法可以通过DirectDraw设备来获得,如下:
DDPIXELFORMAT format;
GetPixelFormat( &format )

65

主题

225

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
 楼主| 发表于 2003-9-15 20:24:00 | 显示全部楼层

Re:我怎么获得当前屏幕色深?

我使用
HRESULT hr;
DDPIXELFORMAT fmt;
hr=m_pddsFrontBuffer->GetPixelFormat(&fmt);
可是hr却等于DDERR_INVALIDPARAMS
怎么回事啊?

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20463
发表于 2003-9-15 21:13:00 | 显示全部楼层

Re:我怎么获得当前屏幕色深?

m_pddsFrontBuffer是否已经初始化?

58

主题

281

帖子

281

积分

中级会员

Rank: 3Rank: 3

积分
281
QQ
发表于 2003-9-16 00:07:00 | 显示全部楼层

Re:我怎么获得当前屏幕色深?


GetDeviceCaps(GetDC(NULL),BITSPIXEL)

65

主题

225

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
 楼主| 发表于 2003-9-16 19:39:00 | 显示全部楼层

Re:我怎么获得当前屏幕色深?

已经初始化了啊。
m_pddsFrontBuffer就是前景缓冲区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-20 04:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表