类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
本人为vc++菜鸟级人物,今有一个对于高手来说很简单的任务,可是我由于时间紧迫,所以请教大家了。
我用vc画了一个坐标图,横坐标0到360度,刻度为1度,纵坐标为0到100次,刻度为一次
是用文档实现的,可是我不知道怎么改成用对话框实现,需要改动哪些方面呢?图上要能够显示数据的
关键代码如下:
void CGridView::Drawpix(CDC* pDC,int x,int y)
{
CRect rectClient; //
GetClientRect(rectClient);//返回客户区矩形的大小
pDC->SetMapMode(MM_ANISOTROPIC);//设定映射模式为MM_ANISOTROPIC
int l,t,r,b,i;
int split_heightL=6,split_heightS=3;
l=rectClient.left+40 ;t=rectClient.top+20 ;r=rectClient.right-20 ;b=rectClient.bottom-40 ;
//绘坐标刻度x轴
pDC->MoveTo (l,b);
pDC->LineTo (r,b);
pDC->MoveTo (l,b);
pDC->LineTo (l,t);
for(int ix=l;ix<=r;ix+=(r-l)/36)
{
pDC->MoveTo (ix,b-1);
pDC->LineTo (ix,b-split_heightL-1);
}
for(ix=l;ix<=r;ix+=(r-l)/360)
{
pDC->MoveTo (ix,b-1);
pDC->LineTo (ix,b-split_heightS-1);
}
//绘坐标刻度y轴
for(int iy=t;iy<=b;iy+=(b-t)/10)
{
pDC->MoveTo (l+1,iy);
pDC->LineTo (l+split_heightL+1,iy);
}
for(iy=t;iy<=b;iy+=(b-t)/100)
{
pDC->MoveTo (l+1,iy);
pDC->LineTo (l+split_heightS+1,iy);
}
for(ix=l,i=0;ix<=r,i<=18;ix+=(r-l)/18,i++)
{
CString str;
str.Format("%d",i*20);
pDC->TextOut(ix,b+10,str);
}
for(iy=b-(b-t)/10,i=1;iy>=t,i<=10;iy-=(b-t)/10,i++)
{
CString str;
str.Format("%d",i*10);
pDC->TextOut(l-30,iy,str);
}
pDC->MoveTo(r,b);
pDC->LineTo(r-10,b-10);
pDC->MoveTo(r,b);
pDC->LineTo(r-10,b+10);
pDC->MoveTo(l,t);
pDC->LineTo(l+10,t+10);
pDC->MoveTo(l,t);
pDC->LineTo(l-10,t+10);
//坐标标题
pDC->TextOut (r-30,b-25,_T("度")); //横坐标
pDC->TextOut (l-30,t-15,_T("次")); //纵坐标
CPoint pt1;
pt1.x=(r-l)*x/360+l;
pt1.y=(b-t)*y/100+t;
//画点
pDC->SetPixel(pt1,RGB(255,0,0));
}
调用的时候,Drawpix(pDC,180,50);
麻烦各位大大帮帮小弟吧~~~
网友回答: