游戏开发论坛

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

我想改?某一piexel的?色,但是?色是成功的改了,但是?s?]更新

[复制链接]

414

主题

611

帖子

621

积分

高级会员

Rank: 4

积分
621
发表于 2007-7-20 01:27:00 | 显示全部楼层 |阅读模式
我想改?某一piexel的?色,但是?色是成功的改了,但是?s?]更新,why?

void CAppDrawAdv::OnMouseMove(UINT nFlags, CPoint point)
{
if (m_surface==NULL)
return;

D3DLOCKED_RECT lrect;

m_surface->LockRect(&lrect,NULL,D3DLOCK_DISCARD );

int x,y;
x=point.x;
y=point.y;

DWORD* p=(DWORD*)(lrect.pBits);
p[y*(lrect.Pitch/sizeof(DWORD))+x]=RGB(255,0,0);

DWORD dwColor = ((DWORD*)lrect.pBits)[y*(lrect.Pitch/sizeof(DWORD))+x];//Y*Width+X

m_surface->UnlockRect();

USHORT r=GetRValue(dwColor);
USHORT g=GetGValue(dwColor);
USHORT b=GetBValue(dwColor);

TRACE(L"r=%d,g=%d,b=%d\n",r,g,b);
}

414

主题

611

帖子

621

积分

高级会员

Rank: 4

积分
621
 楼主| 发表于 2007-7-20 20:31:00 | 显示全部楼层

Re:我想改?某一piexel的?色,但是?色是成功的改了,但是?s?]更新

我的程式?如下,我?⒆笊辖堑囊恍?K???T成?色,可是?面上的?]?(可是我如果??urface?Υ娉?D?n,?t?D?n的?有?色的?^?K)
我的m_surface->LockRect的flag???,??佑?????
感?是更新的???

void CAppDrawAdv:ivideGrid()
{
        m_surface=NULL;
        D3DDISPLAYMODE display;

        m_pD3DDevice->GetDisplayMode(0,&display);
        m_pD3DDevice->CreateOffscreenPlainSurface(display.Width,display.Height,D3DFMT_A8R8G8B8,D3DPOOL_DEFAULT,&m_surface,NULL);
        m_pD3DDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&m_surface);
        D3DXSaveSurfaceToFile(L"file.bmp",D3DXIFF_BMP,m_surface,NULL,NULL);

        CSize GridSize=m_pMainFrame->m_pView->m_GridSetBar.GetGridSize();

        D3DLOCKED_RECT lrect;
        m_surface->LockRect(&lrect,NULL,0 );

        for (int y=0;y<GridSize.cy;y++)
        {
                for (int x=0;x<GridSize.cy;x++)
                {

                        //int x,y;
                        //x=point.x;
                        //y=point.y;

                        DWORD* p=(DWORD*)(lrect.pBits);
                        p[y*(lrect.Pitch/sizeof(DWORD))+x]=RGB(255,0,0);

                        DWORD dwColor = ((DWORD*)lrect.pBits)[y*(lrect.Pitch/sizeof(DWORD))+x];//Y*Width+X

                        USHORT r=GetRValue(dwColor);
                        USHORT g=GetGValue(dwColor);
                        USHORT b=GetBValue(dwColor);

                }
        }
        m_surface->UnlockRect();

        POINT p;
        p.x=0;
        p.y=0;

        m_pD3DDevice->UpdateSurface(m_surface,NULL,m_surface,&p);
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 18:12

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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