📄 displaywindow.cpp
字号:
// a = ADdata[i-1]; // Edge Triggered
/* trigger NEG to POS */
if (addata[i] <= a && addata[i-1] > a)
{
m_nTriggerCH1 = i;
/* Disable trigger for scroll mode */
// if (pApp->m_nSampleMode == 0) m_nTriggerCH1 = 0; // disbale trigger
break;
}
}
}
return m_nTriggerCH1;
}
BOOL DisplayWindow::DrawDispBack(CDC *pDC,int Width, int Height)
{
CDC dc_Mem;
CBitmap * oldBmp = NULL;
dc_Mem.CreateCompatibleDC(pDC);
oldScreen_Bitmap.CreateCompatibleBitmap(pDC,Width,Height);
oldBmp=dc_Mem.SelectObject(&oldScreen_Bitmap);
CBrush newBrush(RGB(1,0,16));
CRect rcClip(0,0,Width,Height);
dc_Mem.FillRect(rcClip,&newBrush);
int h_st=Height/8;
int w_st=Width/10;
//CPen dotPen(PS_DOT,1,RGB(100,100,108));
CPen SoldPen(PS_SOLID,1,RGB(100,100,108));
// CPen SoldPen(PS_SOLID,1,RGB(100,100,108));
CPen * oldPen=dc_Mem.SelectObject(&SoldPen);
int j;
for(int i=1;i<9;i++)
{ //draw ____line .
for(j=0;j<Width;j+=5)
dc_Mem.SetPixel(j,h_st*i,RGB(100,100,108));
//dc_Mem.MoveTo(0,h_st*i);
//dc_Mem.LineTo(Width,h_st*i);
}
for(i=1;i<10;i++){
//draw | line .
for(j=0;j<Height;j+=5)
dc_Mem.SetPixel(i*w_st,j,RGB(100,100,108));
//dc_Mem.MoveTo(i*w_st,0);
//dc_Mem.LineTo(i*w_st,Height);
}
//dc_Mem.SelectObject(oldPen);
//oldPen=dc_Mem.SelectObject(&SoldPen);
//draw --Line
dc_Mem.MoveTo(0,h_st*4);
dc_Mem.LineTo(Width,h_st*4);
//draw | line .
dc_Mem.MoveTo(5*w_st,0);
dc_Mem.LineTo(5*w_st,Height);
//draw ^
for(i=0;i<50;i++)
{ dc_Mem.MoveTo(w_st/5*i,h_st*4-3);
dc_Mem.LineTo(w_st/5*i,h_st*4+3);
//draw | line .
dc_Mem.MoveTo(5*w_st-3,h_st/5*i);
dc_Mem.LineTo(5*w_st+3,h_st/5*i);
}
// dc_Mem.BitBlt(0,0,ww,hh,pDC,0,0,SRCCOPY); // 将原屏幕图象(oldScreen_Bitmap)
dc_Mem.SelectObject (GetStockObject(NULL_BRUSH));
dc_Mem.Rectangle (0,0,Width,Height);
dc_Mem.SelectObject (oldPen);
dc_Mem.SelectObject (oldBmp);
dc_Mem.DeleteDC();
return true;
}
void DisplayWindow::DisVoltage(CDC *pDC,int x, int y, int w, int h)
{
char vv[13][10]={"40.0","36.0","32.0","28.0","24.0",
"20.0","16.0","12.0","8.0","4.0","0.0"};
m_OldFont=pDC->SelectObject(m_font);
CString mes;
pDC->SetBkColor(RGB(1,0,16));
pDC->SetTextColor(RGB(100,100,108));
/* if(vlots/100>=1)
{
for( int i=0;i<=5;i++)
{ mes.Format("%0.1f",(vlots/1000.)*(5-i));
pDC->TextOut(25,y+i*h/10,mes);
}
for(;i<=10;i++)
{ mes.Format("-%0.1f",(vlots/1000.0)*(i-5));
pDC->TextOut(25,y+i*h/10,mes);
}
mes="Vlotage (V)";
}
else
{
for( int i=0;i<=5;i++)
{ mes.Format("%0.1f",vlots*(5-i));
pDC->TextOut(25,y+i*h/10,mes);
}
for(;i<=10;i++)
{ mes.Format("-%0.1f",vlots*(i-5));
pDC->TextOut(25,y+i*h/10,mes);
}
mes="Vlotage (mV)";
}
*/
for( int i=0;i<=10;i++)
{
pDC->TextOut(25,y+i*h/10,vv[i]);
}
mes="Current (A)";
CFont sFont;
sFont.CreateFont(15,0,900,0,0,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,NULL);
CFont * pOldFont;
pOldFont=pDC->SelectObject(&sFont);
pDC->TextOut(5,y+h/2+40,mes);
//CRect rt(5,0,20,h);
//pDC->DrawText (mes,rt,DT_CENTER|DT_BOTTOM |DT_SINGLELINE);
pDC->SelectObject(pOldFont);
}
void DisplayWindow::DisTimeVlem(CDC *pDC, int x, int y, int w, int h)
{
m_OldFont=pDC->SelectObject(m_font);
CString mes,title;
// float time;
pDC->SetBkColor(RGB(1,0,16));
pDC->SetTextColor(RGB(100,100,108));
float f;
int t=time_div[tdv]/100000;
if(t>0)
{ f=t/10.0;
title="Time (ms)";
}
else
{
t=time_div[tdv]/100;
if(t>0)
{ f=t/10.0;
title="Time (us)";
}
else
{ f=time_div[tdv];
title="Time (ns)";
}
}
for(int i=0;i<=10;i++)
{
mes.Format("%.1f",i*f);
pDC->TextOut(x+i*w/10,y+h+2,mes);
}
pDC->TextOut(x+5*w/10,y+h+20, title);
}
void DisplayWindow::DisLeftAxis(CDC *pDC, int x, int y)
{
CDC m_DC;
m_DC.CreateCompatibleDC (pDC);
CBitmap * pOldBitmap =m_DC.SelectObject(&LeftBitmap);
lrect.left=x;lrect.top=y-leftbm.bmHeight/2;
lrect.right=x+leftbm.bmWidth;
lrect.bottom=lrect.top+leftbm.bmHeight;
pDC->BitBlt ( lrect.left,lrect.top,leftbm.bmWidth ,leftbm.bmHeight,&m_DC,0,0,SRCCOPY);
m_DC.SelectObject (pOldBitmap);
m_DC.DeleteDC ();
}
void DisplayWindow::DisTopAxis(CDC *pDC, int x, int y)
{
/* CDC m_DC;
m_DC.CreateCompatibleDC (pDC);
CBitmap * pOldBitmap =m_DC.SelectObject(&TopBitmap);
trect.left=x-topbm.bmWidth/2;
trect.top=y-topbm.bmHeight;
trect.right=trect.left+topbm.bmWidth;
trect.bottom=trect.top+topbm.bmHeight;
pDC->BitBlt (trect.left,trect.top,topbm.bmWidth ,topbm.bmHeight,&m_DC,0,0,SRCCOPY);
m_DC.SelectObject (pOldBitmap);
m_DC.DeleteDC ();
*/
}
//#define DISWIDTH 600
//#define DISHEIGHT 400
void DisplayWindow::DisScaleLine()
{
disScaleLine=!disScaleLine;
if(disScaleLine)
{
LeftScaleSit=DISWIDTH/3;
RightScaleSit=2*DISWIDTH/3;
UpScaleSit=DISHEIGHT/3;
DownScaleSit=2*DISHEIGHT/3;
}
ReDrawSCreen();
}
/******************************************************
DisScaleLine x is X offsize;
y is Y offsize;
w is disWindowsWidth;
h is disWindowsHeight;
下面的这些参数是显示测量线的所用的.
CRect LeftScaleRect,RightScaleRect,UpScaleRect,DownScaleRect;
int LeftScaleSit,RightScaleSit,UpScaleSit,DownScaleSit;
*/
void DisplayWindow::DisScaleLine(CDC *pDC, int x, int y,int w, int h)
{
CString mes;
unsigned int t,F;
float fx;
LeftScaleRect.left=x+LeftScaleSit-topbm.bmWidth/2;
LeftScaleRect.top=y-topbm.bmHeight;
LeftScaleRect.right=LeftScaleRect.left+topbm.bmWidth;
LeftScaleRect.bottom=LeftScaleRect.top+topbm.bmHeight;
RightScaleRect.left=x+RightScaleSit-topbm.bmWidth/2;
RightScaleRect.top=y-topbm.bmHeight;
RightScaleRect.right=RightScaleRect.left+topbm.bmWidth;
RightScaleRect.bottom=RightScaleRect.top+topbm.bmHeight;
UpScaleRect.left=x+w;
UpScaleRect.top=y+UpScaleSit-leftscalebm.bmHeight/2;
UpScaleRect.right=UpScaleRect.left+leftscalebm.bmWidth;
UpScaleRect.bottom=UpScaleRect.top+leftscalebm.bmHeight;
DownScaleRect.left=x+w;
DownScaleRect.top=y+DownScaleSit-leftscalebm.bmHeight/2;
DownScaleRect.right=DownScaleRect.left+leftscalebm.bmWidth;
DownScaleRect.bottom=DownScaleRect.top+leftscalebm.bmHeight;
pDC->SetBkColor (RGB(0,0,0));
pDC->SetTextColor (RGB(255,255,255));
t=time_div[tdv]/50;
if(RightScaleSit==LeftScaleSit)
F=1000000000*t;
else
F=1000000000/(fabs((RightScaleSit-LeftScaleSit))*t);
if(F>1000000000)
{ fx=F/1000000000.0;
mes.Format ("X1-X2=%.2fGhz , l=%d",fx,RightScaleSit-LeftScaleSit);//; Y1-Y2=%d",,DownScaleSit-UpScaleSit);
}
else
{ if(F>1000000)
{ fx=F/1000000.0;
mes.Format ("X1-X2=%.2fMhz , l=%d",fx,RightScaleSit-LeftScaleSit);//; Y1-Y2=%d",,DownScaleSit-UpScaleSit);
}
else
{ if(F>1000)
{fx=F/1000.0;
mes.Format ("X1-X2=%.2fKhz , l=%d",fx,RightScaleSit-LeftScaleSit);//; Y1-Y2=%d",,DownScaleSit-UpScaleSit);
}
else
mes.Format ("X1-X2=%dhz , l=%d",F,RightScaleSit-LeftScaleSit);//; Y1-Y2=%d",,DownScaleSit-UpScaleSit);
}
}
pDC->TextOut (40,y-40,mes);
mes.Format("Y1-Y2=%d",DownScaleSit-UpScaleSit);
pDC->TextOut (40,y-20,mes);
CPen Pen(PS_DOT,1,RGB(255,255,255));
CPen * oldPen=pDC->SelectObject (&Pen);
CDC m_DC_Top;
m_DC_Top.CreateCompatibleDC (pDC);
CBitmap * pOldBitmap =m_DC_Top.SelectObject(&TopBitmap);
pDC->BitBlt (LeftScaleRect.left,LeftScaleRect.top,topbm.bmWidth ,topbm.bmHeight,&m_DC_Top,0,0,SRCCOPY);
pDC->BitBlt (RightScaleRect.left,RightScaleRect.top,topbm.bmWidth ,topbm.bmHeight,&m_DC_Top,0,0,SRCCOPY);
m_DC_Top.SelectObject (pOldBitmap);
m_DC_Top.DeleteDC ();
pDC->MoveTo (LeftScaleRect.left+topbm.bmWidth/2,LeftScaleRect.top+topbm.bmHeight);
pDC->LineTo (LeftScaleRect.left+topbm.bmWidth/2,LeftScaleRect.top+topbm.bmHeight+h);
pDC->MoveTo (RightScaleRect.left+topbm.bmWidth/2,RightScaleRect.top+topbm.bmHeight);
pDC->LineTo (RightScaleRect.left+topbm.bmWidth/2,RightScaleRect.top+topbm.bmHeight+h);
CDC m_DC_Left;
m_DC_Left.CreateCompatibleDC (pDC);
pOldBitmap =m_DC_Left.SelectObject(&LeftSCaleBitmap);
pDC->BitBlt (UpScaleRect.left,UpScaleRect.top,leftscalebm.bmWidth ,leftscalebm.bmHeight,&m_DC_Left,0,0,SRCCOPY);
pDC->BitBlt (DownScaleRect.left,DownScaleRect.top,leftscalebm.bmWidth ,leftscalebm.bmHeight,&m_DC_Left,0,0,SRCCOPY);
m_DC_Left.SelectObject (pOldBitmap);
m_DC_Left.DeleteDC ();
pDC->MoveTo (x,UpScaleRect.top+leftscalebm.bmHeight/2);
pDC->LineTo (UpScaleRect.left,UpScaleRect.top+leftscalebm.bmHeight/2);
pDC->MoveTo (x,DownScaleRect.top+leftscalebm.bmHeight/2);
pDC->LineTo (DownScaleRect.left,DownScaleRect.top+leftscalebm.bmHeight/2);
}
void DisplayWindow::DrawIcurrenWave()
{/*
CClientDC * pDC;
pDC=new CClientDC(this);
static int count;
CString mes;
CDC dc_Mem_B;
CBitmap Black_Bitmap;
CBitmap * oldBmp_B= NULL;
dc_Mem_B.CreateCompatibleDC(pDC);
Black_Bitmap.CreateCompatibleBitmap(pDC,DISWIDTH,DISWIDTH);
//Black_Bitmap.CreateCompatibleBitmap(pDC,rcClip.Width (),rcClip.Height ());
oldBmp_B=dc_Mem_B.SelectObject(&Black_Bitmap);
CDC dc_Mem_temp;
CBitmap * oldBmp_temp = NULL;
dc_Mem_temp.CreateCompatibleDC(pDC);
oldBmp_temp=dc_Mem_temp.SelectObject(&oldScreen_Bitmap);
dc_Mem_B.BitBlt(0,0,DISWIDTH,DISWIDTH,&dc_Mem_temp,0,0,SRCCOPY);
dc_Mem_temp.SelectObject(oldBmp_temp);
dc_Mem_temp.DeleteDC ();
CPen newPen(PS_SOLID,1,RGB(0,255,0));
CPen newPen1(PS_SOLID,1,RGB(255,0,0));
CPen * oldPen=NULL;
int h=DISHEIGHT;
int width=DISWIDTH;
int y;
for(int i=0;i<Sample_Depth-1;i++)
addata[i]=addata[i+1];
oldPen=dc_Mem_B.SelectObject(&newPen);
y=h-addata[0]*h/40000;
if(y<0)y=0;
dc_Mem_B.MoveTo(0,y);
for(i=1;i<Sample_Depth;i++)
{
y=h-addata[i]*h/40000;
if(y<0)y=0;
dc_Mem_B.LineTo(i,y);
}
//Draw vlot
for( i=0;i<Sample_Depth-1;i++)
vlot[i]=vlot[i+1];
oldPen=dc_Mem_B.SelectObject(&newPen1);
y=h-vlot[0]*h/1024;
if(y<0)y=0;
dc_Mem_B.MoveTo(0,y);
for(i=1;i<Sample_Depth;i++)
{
y=h-vlot[i]*h/1024;
if(y<0)y=0;
dc_Mem_B.LineTo(i,y);
}
//#define DISWIDTH 600
//#define DISHEIGHT 400
//#define XOFFSIZE 30
//#define YOFFSIZE 20
count++;
CDC dc_Mem;
CBitmap Dis_Bitmap;
CBitmap * oldBmp= NULL;
dc_Mem.CreateCompatibleDC(pDC);
Dis_Bitmap.CreateCompatibleBitmap(pDC,rcClip.Width (),rcClip.Height ());
oldBmp=dc_Mem.SelectObject(&Dis_Bitmap);
dc_Mem.BitBlt(XOFFSIZE,YOFFSIZE,DISWIDTH,DISWIDTH,&dc_Mem_B,0,0,SRCCOPY);
dc_Mem_B.SelectObject(oldPen);
dc_Mem_B.SelectObject(oldBmp_B);
dc_Mem_B.DeleteDC ();
DisVoltage(&dc_Mem,XOFFSIZE,YOFFSIZE-10,DISWIDTH,DISHEIGHT);
DisTimeVlem(&dc_Mem,XOFFSIZE-15,YOFFSIZE,DISWIDTH,DISHEIGHT);
DisLeftAxis(&dc_Mem,XOFFSIZE+DISWIDTH+2, YOFFSIZE+leftSit);
if(disScaleLine)
DisScaleLine(&dc_Mem,XOFFSIZE,YOFFSIZE,DISWIDTH,DISHEIGHT);
//DisTopAxis(&dc_Mem, XOFFSIZE+topSit, YOFFSIZE);
pDC->BitBlt(0,0,rcClip.Width (),rcClip.Height (),&dc_Mem,0,0,SRCCOPY);
dc_Mem.SelectObject(oldBmp);
dc_Mem.DeleteDC ();
delete pDC;
*/
}
void DisplayWindow::DisCymometer(CDC *pDC, int x, int y)
{ unsigned int cntB,cntX,t;
unsigned char *p;
CFont *oldfont,font;
CString tmp;
float Fx,fx;
font.CreateFont(-MulDiv(10,-pDC->GetDeviceCaps(LOGPIXELSY),42),
0,0,0,FW_NORMAL,0,0,0,GB2312_CHARSET,
OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY,
VARIABLE_PITCH|FF_SWISS,_T("黑体"));
p=addata+1024;
t=0;
for(int i=0;i<3;i++)
{ t|=*p++;
t<<=8;
}
t|=*p;
cntB=t;
p++;
t=0;
for(i=0;i<3;i++)
{t|=* p++;
t<<=8;
}
t|=*p;
cntX=t;
if(cntB>0)
{
fx=(50000.0*cntX)/cntB;
fx*=1000.0;
if(fx>1000000)
{ Fx= fx/1000000.0;
tmp.Format("%0.2fMhz",Fx/* cntB=%d,cntX=%d,cntB,cntX*/);
}
else
{
if(fx>1000&&fx<1000000)
{ Fx=fx/1000.0;
tmp.Format("%0.2fKhz",Fx/*,cntB,cntX*/);
}
else
{ Fx=fx/1.0;
tmp.Format("%dhz",Fx/*,cntB,cntX*/);
}
}
pDC->SetTextColor(RGB(255,255,0));
pDC->SetBkColor(RGB(1,0,16));
oldfont=pDC->SelectObject(&font);
pDC->TextOut(x,y,tmp);
pDC->SelectObject(oldfont);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -