利用静态文本控件实现画图

有时候,我们需要自绘一些图形,这时候就可以使用静态文本控件来实现绘图功能。

利用静态文本控件实现画图_第1张图片



具体实现效果如上,

要实现以上功能,首先我们需要获取到控件窗口的句柄,并且设置绘制的范围

然后在实现画X,Y轴,刻度标尺等功能。

具体代码如下



void CMFCApplication5Dlg::OnBnClickedButton1()
{


// TODO:  在此添加控件通知处理程序代码


CWnd *pwnd = GetDlgItem(IDC_STATIC1);
CDC *pdc = pwnd->GetDC();
pwnd->Invalidate();
pwnd->UpdateWindow();


pdc->Rectangle(0, 0, 320, 320);


CPen *ppenRed = new CPen;


ppenRed->CreatePen(PS_SOLID, 2, RGB(255, 0, 0));
CGdiObject *pOldpen = pdc->SelectObject(ppenRed);
pdc->MoveTo(20, 20);
pdc->LineTo(20, 300);
pdc->LineTo(300, 300);


CString str;
str.Format(_T("0"));
pdc->SetTextColor(RGB(0 ,255, 0));
pdc->TextOutW(20, 303, str);
str.Format(_T("50"));
pdc->SetTextColor(RGB(0, 255, 0));
pdc->TextOutW(70, 303, str);
str.Format(_T("100"));
pdc->SetTextColor(RGB(0, 255, 0));
pdc->TextOutW(120, 303, str);
str.Format(_T("150"));
pdc->SetTextColor(RGB(0, 255, 0));
pdc->TextOutW(170, 303, str);
str.Format(_T("200"));
pdc->SetTextColor(RGB(0, 255, 0));
pdc->TextOutW(220, 303, str);
str.Format(_T("250"));
pdc->SetTextColor(RGB(0, 255, 0));
pdc->TextOutW(270, 303, str);


for (int i = 10; i < 300; i += 5){
if ((i & 1) == 0){
pdc->MoveTo(i + 10, 300);
pdc->LineTo(i + 10, 303);
}
else{
pdc->MoveTo(i + 10, 300);
pdc->LineTo(i + 10, 302);
}
}

}



编程其实并不难,一步一个脚印,让我们坚持下去吧

你可能感兴趣的:(c++)