游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: hqlwy

关于directx中坐标系的问题!!

[复制链接]

1

主题

266

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
发表于 2010-3-21 21:33:00 | 显示全部楼层

Re:关于directx中坐标系的问题!!

恩  情况跟我想的一样。

首先CreateWindow()这个函数中的宽高是指整个窗口的大小,而你要的是程序窗口“客户区”的大小。
整个窗口包括标题栏、边框等,中间的那部分“客户区”才是大多数窗口程序希望提供给用户的内容。而如果你按照600*600的大小创建窗口,那么你的客户区实际上是不足600*600的!  至于到底缩小多少,那是跟你的窗口的风格有关的(取决于被窗口标题、边框等占据了多大)。

如果你想要创建的窗口客户区的实际大小有600*600,那你可以这样做(这也是一种通用的方法):
1.在你调用CreateWindow()时大小可以随便写(因为一会儿还要更改)。
2.通过AdjustWindowRectEX(LPRECT lpRect,DWORD dwStyte;BOOL bMenu;DWORD dwExStyle)函数算出实际的窗口大小。此函数会根据所需的窗口客户区大小算出窗口实际大小。
其中lpRect是希望的客户区的大小,dwStyte是窗口风格,bMenu是是否有菜单栏,dwExStyle是窗口的扩展风格。
函数会将计算好的窗口RECT通过lpRect返回。
3.用MoveWindow()函数调整窗口的大小。

具体代码如下;
RECT WindowsRect = { 0, 0, WIDTH, HEIGHT };      //WIDTH:需要的客户区宽度, HEIGHT:需要的客户区高度
AdjustWindowRectEx( &WindowsRect,
                    GetWindowStyle( hWnd ),      //得到窗口风格
                    GetMenu( hWnd ) != NULL,     //是否有菜单栏
                    GetWindowExStyle( hWnd ) );  //得到窗口扩展风格

MoveWindow( hWnd, 0, 0, WindowsRect.right-WindowsRect.left, WindowsRect.bottom-WindowsRect.top, FALSE );   //调整窗口

你可以将这段代码放在CreateWindow()和ShowWindow()之间。

13

主题

312

帖子

312

积分

中级会员

Rank: 3Rank: 3

积分
312
发表于 2010-3-22 09:12:00 | 显示全部楼层

Re:关于directx中坐标系的问题!!

13

主题

312

帖子

312

积分

中级会员

Rank: 3Rank: 3

积分
312
发表于 2010-3-22 09:16:00 | 显示全部楼层

Re: Re: 关于directx中坐标系的问题!!

NightCrawler: Re: 关于directx中坐标系的问题!!

DX使用的是左手坐标系
{ 600.0f, 600.0f, 0.0f, 1.0f, 0xff0000ff,}是逻辑坐标 ,窗体客户区是设备坐标

...


恩。这个的确要注意~~~  :〉



---------------------------------------------------------------------

开源图形处理器体系结构论坛(OpenGPU论坛)  
http://www.opengpu.org/bbs/

OpenGPU Graphics Open Source community图形开源社区),聚焦领域(focus domain)包括:
  * GPU Architecture(图形处理器体系结构).
  * Graphics Algorithm(图形算法).
  * Open Source Rendering Engine(开源渲染器).
  * Open Source GPU Simulator/RTL Implement(开源GPU模拟器).
  * GPGPU Programming (面向通用的图形处理器编程).
  * GPU General-purposed Computing (GPU通用计算).




.

6

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2010-3-22 21:36:00 | 显示全部楼层

Re:关于directx中坐标系的问题!!

非常感谢以上给我解答的朋友们,我先试试看,以后希望能与你们常交流。

6

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2010-3-22 21:42:00 | 显示全部楼层

Re:关于directx中坐标系的问题!!

我的问题解决了,再次感谢各位大侠的帮助!!!!!!!!!

6

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2010-3-22 21:54:00 | 显示全部楼层

Re:关于directx中坐标系的问题!!

这位名叫onemoo的大侠,很感谢你的方法,同时我也很希望能成为你的好友,能留一下联系方式吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-15 05:19

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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