画扫描线是VC程序员经常遇到的一个问题,这里作一个最简单的扫描线供大家参考!
技术要点:
1 双缓冲区绘图
2坐标映射
3:角度与弧度的转换
代码如下
全局变量
int nWidth,nHeight;
CDC *pDC;
int x,y;
int n;
实现代码
BOOL CDemoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
nWidth=400;
nHeight=400;
x=200;
y=0;
n=0;
pDC=GetDC();
pDC->SetViewportOrg(200,200);
return TRUE; }
void CDemoDlg::OnTimer(UINT nIDEvent)
{
if(nIDEvent==1)
{
CDC MemDC;
CBitmap MemBitmap;
MemDC.CreateCompatibleDC(NULL);
MemDC.SetViewportOrg(200,200);
MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
MemDC.FillSolidRect(-200,-200,400,400,RGB(255,255,0));
MemDC.Arc(-200,-200,200,200,200,200,200,200);
MemDC.MoveTo(0,0);
MemDC.LineTo(x,y);
pDC->BitBlt(-200,-200,400,400,&MemDC,-200,-200,SRCCOPY);
MemBitmap.DeleteObject();
MemDC.DeleteDC();
n++;
y=200*sin(PI*n/NUM);
x=200*cos(PI*n/NUM);
}
CDialog::OnTimer(nIDEvent);
}
具体的请自行分析!用问题请留言!!