注册 登录
编程论坛 VC++/MFC

请问怎么用VC++编个坐标轴啊,在界面上显示

rockee123 发布于 2007-04-26 20:58, 1610 次点击
谁能告诉我吗
7 回复
#2
小琪2007-04-26 22:38

会了教教我

#3
bill88882007-04-27 12:37

呵呵
想学习

#4
余来2007-04-27 12:40

在OnPaint里面画出来算了,好象VC没自带这样的控件

#5
cz5223212007-04-29 22:34
利用MoveTo和LineTo画出坐标轴,然后利用TextOut在相应的坐标位置输出相应的坐标数值就行了.
#6
wangbinxsh2010-04-18 15:02
回复 楼主 rockee123
你可以 试试  TEECHART 控件! 祝你好运!
#7
d01131507462010-06-21 10:00
void CWorkView::OnDraw(CDC* pDC)
{
    // TODO: Add your specialized code here and/or call the base class
    CRect rect;
    GetClientRect(&rect);
    pDC->SetMapMode(MM_ANISOTROPIC);
    pDC->SetViewportOrg(rect.right-685,rect.bottom-575);
    pDC->SetViewportExt(rect.right-200,rect.bottom);
    pDC->SetWindowOrg(0,0);
    pDC->SetWindowExt(1000,1000);   

         CString str;
         pDC->Rectangle(0,0,rect.right-185,rect.bottom+25);//画一个矩形
         CPen *pPenRed=new CPen(); //创建画笔对象
         pPenRed->CreatePen(PS_SOLID,1,RGB(255,0,0));//红色画笔
         CPen *pPen=NULL;
         CGdiObject *pOldPen=pDC->SelectObject(pPenRed);//保存当前红色画笔

         
         pDC->MoveTo(20,20);//绘制坐标轴
         pDC->LineTo(20,rect.bottom-20);//Y
         pDC->LineTo(815,rect.bottom-20);//x
//绘制x轴刻度
         for(int i=0;i<17;i++)  //绘制最高刻度
         {
           str.Format("%d",i*128);
           pDC->TextOut(30+48*i,rect.bottom,str);//控制间距

           //绘制想x轴刻度
           pDC->MoveTo(45+48*i,rect.bottom);
           pDC->LineTo(45+48*i,rect.bottom-20);
         }

         for(i=0;i<33;i++)  //绘制中间刻度
         {
           //绘制想x轴刻度
           pDC->MoveTo(45+24*i,rect.bottom-5);
           pDC->LineTo(45+24*i,rect.bottom-20);
         }

         for(i=0;i<128;i++)  //绘制最低刻度
         {
           //绘制想x轴刻度
           pDC->MoveTo(45+6*i,rect.bottom-10);
           pDC->LineTo(45+6*i,rect.bottom-20);
         }

//绘制y轴刻度
         for(i=1;i<=7;i++)
         {
             str.Format("%d",i);
             pDC->TextOut(2,rect.left+740-100*i,str);  //标度
             //绘制Y轴刻度
             pDC->MoveTo(20,rect.left+740-100*i);
             pDC->LineTo(35,rect.left+740-100*i);
         }

         for(i=2;i<=13;i++)
         {
             //绘制Y轴刻度
             pDC->MoveTo(20,rect.left+740-50*i);
             pDC->LineTo(30,rect.left+740-50*i);
         }

         for(i=10;i<70;i++)
         {
             //绘制Y轴刻度
             pDC->MoveTo(20,rect.left+740-10*i);
             pDC->LineTo(25,rect.left+740-10*i);
         }

}这个给你看看  直接可以用的。
#8
喜鹊王子2013-01-17 13:26
回复 7楼 d0113150746
这样画的话,只要窗口被覆盖或者调整大小,画的这些线就会立马消失吧?
1