我想把这段在线程中实现的画语图的代码,用directx重新做一次,解决我现在画图慢和覆盖的问题,以前没接触过directx,请大家指点一下如何改,修改要求时间比较急,请高手帮我看看,给我一些具体的指点,多谢!!!
void drawpicSpec() //画语图
{
int count;
int nLevel;
count=4096;
CDrawpictureData* DrawpictureData=GetDrawpictureData();
ASSERT(DrawpictureData);//获取数据
CColorConf*  ColorConf=GetColorConf();
ASSERT(ColorConf); //获取        CMainFrame *pFrame=(CMainFrame *)AfxGetApp()->m_pMainWnd;
CWBSpecView *pView=(CWBSpecView *)(pFrame->m_pWBSpecview);
CWnd *Specpic=pView->GetDlgItem(IDC_PIC_SPEC);
CDC *SpecpicDC=Specpic->GetDC();
CRect Rect2;
Specpic->GetClientRect(Rect2);
int w=Rect2.Width();
int h=Rect2.Height(); for(int i=0;i<count;i++)
{
 MSG message;
 while(::PeekMessage(&message,NULL,0,0,PM_REMOVE))
 {
 ::TranslateMessage(&message);
 ::DispatchMessage(&message);
 }
 nLevel=ColorConf->Comppow(float(DrawpictureData->uiSonaData[i]));  //计算颜色值
 SpecpicDC->SetPixel(i*Rect2.right/count,Rect2.Height()-1,ColorConf->m_nColor[nLevel]);
}
SpecpicDC->BitBlt(0,Rect2.top-1,w,h,SpecpicDC,0,0,SRCCOPY);
Specpic->ReleaseDC(SpecpicDC);
}

解决方案 »

  1.   

    我从微软上下了一个最新版的directx,好像没这方面的例子,都是讲3d图形操作的
      

  2.   

    或者有一种解决方法,可以先解决了我画图覆盖的问题,由于我控件的大小可以改变,如果是在内存中画好,贴出来,怎么在控件大小改变后调整内存中bitmap的大小呢
      

  3.   

    要装directx8才有
    StretchBlt可以实现放缩
      

  4.   

    directx8及以前的版本才有Directdraw,如果要用DirectX9的话得在3D模式下画
      

  5.   

    大家有没有写directx,一些实例程序,微软上下载的大多是讲3D的,另外,我想把屏幕一整行用不同颜色画出,有没有除了setpix()更好的方法呢