我想把这段在线程中实现的画语图的代码,用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);
}
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);
}
StretchBlt可以实现放缩