游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1630|回复: 1

设置正交投影后,鼠标与矩形相交有误差

[复制链接]

29

主题

107

帖子

107

积分

注册会员

Rank: 2

积分
107
发表于 2010-7-25 22:48:00 | 显示全部楼层 |阅读模式
我自己写了个控件通过下面的使正交投影设置到2D窗口中,但是当我用鼠标检测与控件矩形相交时老是有那么一点误差
是我下面的设置有问题吗?还是我使用的检测相交方法有问题,我用的是windows.h中的点与矩形相交方法PtInRect()按道理来说,下面的设置已经把窗口左上交原点设置为0,0点控件在窗口2D中能正常的显示位置,但是就是与鼠标相交老是有一点误差。还有就是我已经把客户区设置为实际宽高度(除去标题栏,和边框),但是还是不行,,,这使为什么?
VOID _Set2DVPMatrix()
{
        D3DXMATRIX matOrtho;       
        D3DXMATRIX matIdentity;
        D3DXMatrixIdentity(&matIdentity);
        D3DXMatrixOrthoLH(&matOrtho, 1.0f*m_ClientW, 1.0f*m_ClientH, 0.0f, 1000.0f);
        m_Device->SetTransform(D3DTS_PROJECTION, &matOrtho);
        m_Device->SetTransform(D3DTS_WORLD, &matIdentity);
        matIdentity._22= -1;
        matIdentity._41= -m_ClientW/2.0f;
        matIdentity._42=m_ClientH/2.0f;
        m_Device->SetTransform(D3DTS_VIEW, &matIdentity);
}
//下面是控件的检测方法z轴我已经设置为0
RECT r = {m_x, m_y, m_x + m_Width, m_y + m_Height};
POINT        pMouse;
GetCursorPos( &pMouse);
ScreenToClient(hWnd,&pMouse);
PtInRect(&r, pMouse)
//下面是控件绘制部分,
D3DXMATRIX matWorld;
D3DXMatrixTranslation(&matWorld,m_x,m_y, 0.0f);
matWorld._11=m_Width;
matWorld._22=m_Height;
m_Device->SetTransform(D3DTS_WORLD,&matWorld);
m_Device->SetFVF(D3DFVF_SCREENOBJECT);
m_Device->SetStreamSource(0,m_pVB,0,sizeof(VERTEX_CUSTOM));
m_Device->SetTexture(0,m_Texture[m_CurrTexInx]);
m_Device->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);
//请大家赐教了

29

主题

107

帖子

107

积分

注册会员

Rank: 2

积分
107
 楼主| 发表于 2010-7-26 21:02:00 | 显示全部楼层

Re:设置正交投影后,鼠标与矩形相交有误差

找到了,窗口设置问题...晕
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-8 11:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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