VS2010 MFC CDC <坐标系+做图>

我不多说,直接贴上代码,里面注释很详细!!!

	CRect rect;
	m_xoy.GetClientRect(rect);//注册对象:这里的对象我用的是Picture 控件,你也可以直接再Dialog下画
	int x0 = rect.Width();//获取对象宽度
	int y0 = rect.Height();//获取对象高度
	CDC *pDC;
    pDC=m_xoy.GetDC();//获取对象控件
	
    pDC->SetViewportOrg(10,y0);//定位原点<0,0>
    CString sTmp;
    pDC->SetTextColor(0xFF0000);//设置字体颜色
    /* 调整TextOut输出的字体 */
    CFont font;
    font.CreateFont(12, 4, 0, 0, FW_SEMIBOLD,
        FALSE, FALSE, FALSE, 0, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,   DEFAULT_QUALITY, DEFAULT_PITCH | FF_ROMAN, _T("楷体"));
    CFont *pOldFont=pDC->SelectObject(&font);
//  然后接着用TextOut输出就行了,输出后一定要释放。再加上下面这句,搞定了。


	CPen* pPenRed = new CPen;//创建画笔对象
    pPenRed->CreatePen(PS_SOLID, 1, RGB(255,0,0));  //红色画笔
	pDC->SelectObject(pPenRed);//选用该画笔
	/*标注*/
	pDC->TextOut(0,0,_T("<0,0>"));
	pDC->TextOut(0,-500,_T("<0,-500>"));
	pDC->TextOut(500,0,_T("<500,0>"));
	/*画坐标系包括箭头*/
	pDC->MoveTo(0,-500);pDC->LineTo(0-5,-500+10);
	pDC->MoveTo(0,-500);pDC->LineTo(0+5,-500+10);
	pDC->MoveTo(0,-500);pDC->LineTo(0,0);pDC->LineTo(500,0);
	pDC->MoveTo(500,0);pDC->LineTo(500-10,0+5);
	pDC->MoveTo(500,0);pDC->LineTo(500-10,0-5);

	/*eg: 做 y= x^2图*/
	int i = 0;
	pDC->MoveTo(0,0);
	for(i=0; i<100; i++)
	{
		pDC->LineTo(i,-i*i);
	}
	DeleteObject(font);//释放资源
	
	delete pPenRed;//释放内存


你可能感兴趣的:(mfc)