游戏开发论坛

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

如何用鼠标画图?

[复制链接]

5

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2007-6-1 15:57:00 | 显示全部楼层 |阅读模式
如何用鼠标 画图呀

一般的,在 VC里面,用 GDI 很容的

CDC *pDC = GetDC();
pDC->MoveTo(x,y);
pDC->LineTo(x1,y1);
ReleaseDC(pDC);

可是别人说,在 用DIRECTX 后,再用GDI 就不应该了,
那样效率比较低.

我想在我的 三维图形 的上面加一层可以用鼠标 画图的层
可以看成是 加个图形窗口吧,但是怎么弄呀

谢谢帮忙

65

主题

225

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
发表于 2007-6-1 19:06:00 | 显示全部楼层

Re:如何用鼠标画图?

如果使用D3D,你需要先创建一张贴图代表你要画的图,然后Lock这张贴图,再进行绘制,绘制的方法相当于SetPixel,计算X,Y的坐标然后用Lock后的指针与坐标进行偏移,最后别忘了Unlock

---------------------------------------------------
游戏开发技术交流QQ群:40280598

5

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2007-6-1 20:09:00 | 显示全部楼层

能不能写 代码呀.

非常感谢。

但是我不知道 怎么弄 啊.

我已经可以现示 一张纹理贴图,看到3D图象了,但是想在上,就是屏幕上,不是 3D上,放一个透明的 层画图.

真的不知道怎么弄,能不能简单的写两句啊,谢谢啊

另外,如果只能 SetPixel,那要画 很长的线段 好麻烦哦..在 GDI 里,只定义起点 和终点 就可以

能不能帮忙 写两句啊。 非常谢谢.

65

主题

225

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
发表于 2007-6-1 21:40:00 | 显示全部楼层

Re:如何用鼠标画图?

我帮你写个类似SetPixel用法的函数,传入一张贴图,贴图要A8R8G8B8格式,传入坐标和颜色
HRESULT SetPixelToTexture( LPDIRECT3DTEXTURE9 pTex , int x , int y , DWORD dwColor )
{
        HRESULT hr;
        D3DSURFACE_DESC desc;
        ZeroMemory( &desc , sizeof( D3DSURFACE_DESC ) );
        if( pTex )
        {
                LPDIRECT3DSURFACE9 pSur;
                pTex->GetSurfaceLevel ( 0 , &pSur );
                pSur->GetDesc ( &desc );
                pSur->Release ();
        }
        D3DLOCKED_RECT lock;
        hr = pTex->LockRect ( 0 , &lock , 0 , 0 );
        if( FAILED( hr ) )return hr;
        DWORD *pColor = (DWORD*)lock.pBits ;
        pColor[ y*desc.Width+x ] = dwColor;
        pTex->UnlockRect ( 0 );
        return S_OK;
}
如果想要透明色就传0,否则需要注意颜色是带Alpha的,比如红色要传0xFFFF0000,
至于画线想要只传起点和终点,就要自己写了.
有问题可以去群里找我

------------------------------------------------
游戏开发程序交流QQ群:40280598

5

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2007-6-3 15:37:00 | 显示全部楼层

非常感谢。

我加了你,怎么不见你上线啊.

1

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2007-6-4 14:00:00 | 显示全部楼层

呼唤 CreateMaste 大师....

有问题啊...这个是贴在纹理上,我的纹理是变形的显示出来的,我想在屏幕上画,就是不变形的,怎么办啊.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 06:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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