struct CoordXY
{
double x;
double y;
};
//存儲壓強和位移二維值
vector<CoordXY> WxpReadIOAnalog::vAnalog21PS(0);
void DialogC::OnPaint()
{
//CPaintDC dc(this); // device context for painting
// TODO: 在此處添加消息處理程序代碼
// 不爲繪圖消息調用 CDialog::OnPaint()
const int xStart=50;
const int xEnd=850;
const int yStart=100;
const int yEnd=600;
srand(::GetTickCount());
//繪圖
CClientDC dc(this);
CPen pen(PS_SOLID, 1, RGB(0,0,255));//創建一個實線線條,寬度爲1,藍色的畫筆對象
CPen* pOldPen = dc.SelectObject(&pen);//將畫筆對象選入到設備描述表中
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(RGB(0, 0, 0));
//繪製橫座標
//橫座標[100--900],長度爲800
CString str("");
for(int i=0;i<=yEnd-yStart;i=i+50)
{
dc.MoveTo(xStart,yStart+i);
dc.LineTo(xEnd, yStart+i);
str.Format("%4.1f",i/25.0);
dc.TextOutA(xStart-30,yEnd-i-10,str);
}
str=("MPa");
dc.TextOutA(xStart-30,yStart-40,str);
dc.MoveTo(xStart,yEnd);
dc.LineTo(xEnd+20,yEnd);
//繪製縱座標
//縱座標[200,700],長度爲500
for(int i=xStart;i<=xEnd;i=i+50)
{
dc.MoveTo(i,yStart);
dc.LineTo(i,yEnd);
str.Format("%3.1f",(i-xStart)/50.0);
dc.TextOutA(i-10,yEnd+10,str);
}
str=("mm");
dc.TextOutA(xEnd+30,yEnd+10,str);
dc.MoveTo(xStart,yEnd);
dc.LineTo(xStart,yStart-20);
dc.SelectObject(pOldPen);//恢復設備描述表
pen.DeleteObject();
//真實數據繪製
//繪製時,座標轉換是x=100+x;y=600-y;
CPen pen2(PS_SOLID, 1, RGB(255,0,0)); //創建一個線條,寬度爲1,紅色的畫筆對象
pOldPen = dc.SelectObject(&pen2); //將畫筆對象選入到設備描述表中
int x=0;
int y=0;
dc.MoveTo(xStart,yEnd);
int iCount=WxpReadIOAnalog::vAnalog21PS.size();
for(int i=0;i<iCount;i++)
{
x=static_cast<int>(WxpReadIOAnalog::vAnalog21PS[i].x*0.02*50.0);
y=static_cast<int>(WxpReadIOAnalog::vAnalog21PS[i].y*25.0);
dc.LineTo(xStart+x,yEnd-y);
}
dc.SelectObject(pOldPen); //恢復設備描述表
pen2.DeleteObject();
}