void CMyImage::OnPaint() { if((iImage<0)||(m_ImageList==NULL)) return; CPaintDC dc(this); CRect rect; GetClientRect(rect); if(!bClicked) { CPoint p(rect.left + 1,rect.top+1); m_ImageList->Draw(&dc, iImage, p, ILD_NORMAL); } else { CPoint p(rect.left + 2,rect.top+2); m_ImageList->Draw(&dc, iImage, p, ILD_NORMAL); } CPen BlackPen(PS_SOLID,1,RGB(0,0,0)); dc.SelectObject(BlackPen); dc.MoveTo(rect.left,rect.top); dc.LineTo(rect.right,rect.top); dc.MoveTo(rect.left,rect.top); dc.LineTo(rect.left,rect.bottom); if(bClicked) { dc.MoveTo(rect.left,rect.top+1); dc.LineTo(rect.right,rect.top+1); dc.MoveTo(rect.left+1,rect.top); dc.LineTo(rect.left+1,rect.bottom); CPen WhitePen(PS_SOLID,1,RGB(255,255,255)); dc.SelectObject(WhitePen); dc.MoveTo(rect.left,rect.bottom-1); dc.LineTo(rect.right-1,rect.bottom-1); dc.LineTo(rect.right-1,rect.top); } else { dc.MoveTo(rect.left,rect.bottom-1); dc.LineTo(rect.right-1,rect.bottom-1); dc.LineTo(rect.right-1,rect.top); } }
void CDBPickView::DrawFocused(CDC *pDC) { if(nActiveScreen==-1) return; int xw1=WaveformInfo[nActiveScreen]->xw1+4; int xw2=WaveformInfo[nActiveScreen]->xw1+WindowInfoXsize-4; int yw1=WaveformInfo[nActiveScreen]->yw1+4; int yw2=WaveformInfo[nActiveScreen]->yw2-4; CPen WhitePen(PS_SOLID,1,RGB(255,255,255)); CPen GrayPen(PS_SOLID,1,RGB(128,128,128)); CPen *oldPen=pDC->GetCurrentPen(); pDC->SelectObject(&GrayPen); pDC->MoveTo(xw1,MaxY-yw2); pDC->LineTo(xw2,MaxY-yw2); pDC->MoveTo(xw1,MaxY-yw2); pDC->LineTo(xw1,MaxY-yw1); pDC->SelectObject(&WhitePen); pDC->MoveTo(xw2,MaxY-yw1); pDC->LineTo(xw2,MaxY-yw2); pDC->MoveTo(xw2+1,MaxY-yw1); pDC->LineTo(xw2+1,MaxY-yw2); pDC->MoveTo(xw2,MaxY-yw1); pDC->LineTo(xw1,MaxY-yw1); pDC->MoveTo(xw2,MaxY-yw1+1); pDC->LineTo(xw1,MaxY-yw1+1); pDC->SelectObject(oldPen); }
void CDBPickView::DrawWindow(int nWindow, CDC *pDC) { CBrush WhiteBrush(RGB(255,255,255)); CBrush GrayBrush(RGB(192,192,192)); CBrush BlueBrush(RGB(0,0,128)); CPen WhitePen(PS_SOLID,1,RGB(255,255,255)); CPen DarkPen(PS_SOLID,1,RGB(0,0,0)); CPen BluePen(PS_SOLID,1,RGB(0,0,255)); CPen YellowPen(PS_SOLID,1,RGB(255,255,0)); int xw1=WaveformInfo[nWindow]->xw1; int xw2=WaveformInfo[nWindow]->xw2; int yw1=WaveformInfo[nWindow]->yw1; int yw2=WaveformInfo[nWindow]->yw2; int x1=WaveformInfo[nWindow]->x1; int x2=WaveformInfo[nWindow]->x2; int y1=WaveformInfo[nWindow]->y1; int y2=WaveformInfo[nWindow]->y2; long amin=WaveformInfo[nWindow]->amin; long amax=WaveformInfo[nWindow]->amax; CPen *oldPen=pDC->GetCurrentPen(); CFont *oldFont=pDC->GetCurrentFont(); CBrush *oldBrush=pDC->GetCurrentBrush(); CRect rc(xw1, MaxY-yw2, xw2, MaxY-yw1); pDC->FillRect(&rc, &BlueBrush); pDC->SelectObject(&DarkPen); //*********************************************************** pDC->SelectObject(&WhitePen); pDC->MoveTo(xw1,MaxY-yw2); pDC->LineTo(xw2,MaxY-yw2); pDC->MoveTo(xw1,MaxY-yw2); pDC->LineTo(xw1,MaxY-yw1); pDC->MoveTo(xw1+1,MaxY-yw2); pDC->LineTo(xw1+1,MaxY-yw1); pDC->SelectObject(&DarkPen); pDC->MoveTo(xw2,MaxY-yw1); pDC->LineTo(xw2,MaxY-yw2); pDC->MoveTo(xw2,MaxY-yw1); pDC->LineTo(xw1,MaxY-yw1); pDC->SelectObject(&DarkPen); pDC->MoveTo(xw1+WindowInfoXsize,MaxY-yw1); pDC->LineTo(xw1+WindowInfoXsize,MaxY-yw2); pDC->SelectObject(&WhitePen); pDC->MoveTo(xw1+WindowInfoXsize+1,MaxY-yw1); pDC->LineTo(xw1+WindowInfoXsize+1,MaxY-yw2); pDC->MoveTo(xw1+WindowInfoXsize+2,MaxY-yw1); pDC->LineTo(xw1+WindowInfoXsize+2,MaxY-yw2); //************************************************************* // Draw Ampl (Y) Axis // CRect rc1(xw1, MaxY-yw2, xw1+WindowInfoXsize-1, MaxY-yw1); pDC->FillRect(&rc1, &GrayBrush); pDC->SelectObject(&DarkPen); pDC->SetTextColor(RGB(0,0,0)); pDC->MoveTo(xw1+WindowInfoXsize-8,MaxY-(yw1+8)); pDC->LineTo(xw1+WindowInfoXsize-8,MaxY-(yw2-8)); pDC->MoveTo(xw1+WindowInfoXsize-8,MaxY-(yw1+8)); pDC->LineTo(xw1+WindowInfoXsize-8+4,MaxY-(yw1+8)); pDC->MoveTo(xw1+WindowInfoXsize-8,MaxY-(yw2-8)); pDC->LineTo(xw1+WindowInfoXsize-8+4,MaxY-(yw2-8)); pDC->SelectObject(&WhitePen); { RECT rcText; char cText[64]; sprintf(cText,"%d",amax); CRect rcc1(xw1,MaxY-(yw2-8),xw1+WindowInfoXsize-8-2, MaxY-(yw2-8-13)); pDC->DrawText(cText,rcc1,DT_RIGHT); sprintf(cText,"%d",amin); GetTextRectangle(cText, rcText); CRect rcc2(xw1,MaxY-(yw1+8+13),xw1+WindowInfoXsize-8-2, MaxY-(yw1-8)); pDC->DrawText(cText,rcc2,DT_RIGHT); CRect rcc3(xw1+5,(MaxY-yw2),xw1+WindowInfoXsize-8-2, (MaxY-yw1)); sprintf(cText,"%s::%s",WaveformInfo[nWindow]->StaName, WaveformInfo[nWindow]->ChanName); pDC->DrawText(cText,rcc3, DT_VCENTER|DT_SINGLELINE ); } //************************************************************** int nXferBlocks=this->pRTDisplay->WaveformInfo[nWindow]->xferData.GetSize(); double ttt=-1.; double dSpS=WaveformInfo[nWindow]->dSpS; pDC->SelectObject(&YellowPen); for(int j=0; j<nXferBlocks; ++j) { CDataBlock *xfd=this->pRTDisplay->WaveformInfo[nWindow]->xferData[j]; double t1packet=this->pRTDisplay->WaveformInfo[nWindow]->xferData[j]->beg; double t2packet=this->pRTDisplay->WaveformInfo[nWindow]->xferData[j]->end; int nsamp=this->pRTDisplay->WaveformInfo[nWindow]->xferData[j]->nsamp; for(int k=0; k<nsamp; ++k) { long a=this->pRTDisplay->WaveformInfo[nWindow]->xferData[j]->data[k]; double tt=t1packet+(1./dSpS)*k; int x,y; if(tt<t1) continue; if(tt>t2) break; x=(int)((tt-t1)*(x2-x1)/(t2-t1)+x1); if(a>amax) a=amax; if(a<amin) a=amin; y=(a-amin)*(y2-y1)/(amax-amin)+y1; y=MaxY-y; if(tt-ttt>1.1/dSpS) { pDC->MoveTo(x,y); } else { pDC->LineTo(x,y); } ttt=tt; } } DrawGaps(nWindow,pDC); pDC->SelectObject(oldPen); pDC->SelectObject(oldBrush); pDC->SelectObject(oldFont); }
void CDBPickView::DrawTimePanel(CDC *pDC) { char cBuff[64]; CPen WhitePen(PS_SOLID,1,RGB(255,255,255)); CPen DarkPen(PS_SOLID,1,RGB(0,0,0)); CPen RedPen(PS_SOLID,1,RGB(255,0,0)); int xw1=WindowInfoXsize+3; int xw2=MaxX-1; int yw1=1; int yw2=TimeBarYsize-1; int x, x_old; CPen *oldPen=pDC->GetCurrentPen(); pDC->SelectObject(&WhitePen); pDC->MoveTo(xw1,MaxY-yw2); pDC->LineTo(xw2,MaxY-yw2); pDC->MoveTo(xw1,MaxY-yw2); pDC->LineTo(xw1,MaxY-yw1); pDC->SelectObject(&DarkPen); pDC->MoveTo(xw2,MaxY-yw1); pDC->LineTo(xw2,MaxY-yw2); pDC->MoveTo(xw2,MaxY-yw1); pDC->LineTo(xw1,MaxY-yw1); x_old=-1; int imode; x=(int)((xw2-xw1)/(t2-t1)); if(x<3) { x=(int)(60*(xw2-xw1)/(t2-t1)); if(x==0) { imode=2; } else { imode=1; } } else { imode=0; } nLastMarkRightPos=-100; for(long tt=(long)t1; tt<t2; ++tt) { x=(int)((tt-t1)*(xw2-xw1)/(t2-t1)+xw1); if(tt%3600==0) { pDC->SelectObject(&WhitePen); pDC->MoveTo(x,MaxY-yw2); pDC->LineTo(x,MaxY-(yw2-12)); pDC->SelectObject(&DarkPen); pDC->MoveTo(x+1,MaxY-yw2); pDC->LineTo(x+1,MaxY-(yw2-12)); x_old=x; lstrcpy(cBuff, dttostr(tt, 1)); RECT rcc; GetTextRectangle(cBuff,rcc); int nWtd=(rcc.right-rcc.left)/2+1; rcc.left=x-nWtd; rcc.right=x+nWtd; rcc.bottom=(MaxY-yw1); rcc.top=(MaxY-yw2); if(nLastMarkRightPos<rcc.left) { pDC->DrawText(cBuff,&rcc,DT_LEFT|DT_SINGLELINE|DT_BOTTOM); nLastMarkRightPos=rcc.right; } continue; } if(imode<2) if(tt%60==0) { pDC->SelectObject(&WhitePen); pDC->MoveTo(x,MaxY-yw2); pDC->LineTo(x,MaxY-(yw2-8)); pDC->SelectObject(&DarkPen); pDC->MoveTo(x+1,MaxY-yw2); pDC->LineTo(x+1,MaxY-(yw2-8)); x_old=x; pDC->SetTextColor(RGB(255,255,255)); lstrcpy(cBuff, dttostr(tt, 1)); RECT rcc; GetTextRectangle(cBuff,rcc); int nWtd=(rcc.right-rcc.left)/2+1; rcc.left=x-nWtd; rcc.right=x+nWtd; rcc.bottom=(MaxY-yw1); rcc.top=(MaxY-yw2); if(nLastMarkRightPos<rcc.left) { pDC->DrawText(cBuff,&rcc,DT_LEFT|DT_SINGLELINE|DT_BOTTOM); nLastMarkRightPos=rcc.right; } continue; } if(imode==0) { pDC->SelectObject(&WhitePen); pDC->MoveTo(x,MaxY-yw2); pDC->LineTo(x,MaxY-(yw2-4)); pDC->SelectObject(&DarkPen); pDC->MoveTo(x+1,MaxY-yw2); pDC->LineTo(x+1,MaxY-(yw2-4)); x_old=x; } } /* pDC->SetTextColor(RGB(255,255,255)); lstrcpy(cBuff, dttostr(t1, 1)); CRect *rcc=new CRect(xw1,(MaxY-yw2),xw2, (MaxY-yw1)); pDC->DrawText(cBuff,rcc,DT_LEFT|DT_SINGLELINE|DT_BOTTOM); delete rcc; lstrcpy(cBuff, dttostr(t2, 1)); rcc=new CRect(xw1,(MaxY-yw2),xw2, (MaxY-yw1)); pDC->DrawText(cBuff,rcc,DT_RIGHT|DT_SINGLELINE|DT_BOTTOM); delete rcc;*/ pDC->SelectObject(oldPen); }
void CDBPickView::DrawWaveforms() { CWaitCursor wc; this->pRTDisplay->Critical.Lock(); RECT rc; CDC MemDC; CDC *pDC=GetDC(); CBitmap Bitmap1; CalculateWindowsSize(); rc.left=rc.top=0; rc.right=MaxX; rc.bottom=MaxY; Bitmap1.CreateCompatibleBitmap(pDC,rc.right,rc.bottom); MemDC.CreateCompatibleDC(pDC); ReleaseDC(pDC); CBitmap *poldBMP=MemDC.SelectObject(&Bitmap1); CBrush WhiteBrush(RGB(255,255,255)); CBrush GrayBrush(RGB(192,192,192)); CBrush BlueBrush(RGB(0,0,128)); CPen WhitePen(PS_SOLID,1,RGB(255,255,255)); CPen DarkPen(PS_SOLID,1,RGB(0,0,0)); CPen BluePen(PS_SOLID,1,RGB(0,0,255)); CPen YellowPen(PS_SOLID,1,RGB(255,255,0)); CPen WhitePen2(PS_SOLID,2,RGB(255,255,255)); CPen GrayPen2(PS_SOLID,2,RGB(128,128,128)); CPen *oldPen=MemDC.GetCurrentPen(); CFont *oldFont=MemDC.GetCurrentFont(); CBrush *oldBrush=MemDC.GetCurrentBrush(); MemDC.SetBkMode(TRANSPARENT); MemDC.FillRect(&rc, &BlueBrush); MemDC.SelectObject(CFont::FromHandle((HFONT)GetStockObject(ANSI_VAR_FONT))); MemDC.SelectObject(&DarkPen); MemDC.MoveTo(0,0); MemDC.LineTo(0,MaxY); DrawTimePanel(&MemDC); for(int i=0; i<WaveformInfo.GetSize(); ++i) { DrawWindow(i,&MemDC); } MemDC.SelectObject(poldBMP); MemDC.SelectObject(oldPen); MemDC.SelectObject(oldBrush); MemDC.SelectObject(oldFont); MemDC.DeleteDC(); this->pRTDisplay->Critical.Unlock(); ScreenBitmapCriticalSection.Lock(); if(Bitmap.m_hObject!=NULL) { Bitmap.DeleteObject(); } HGDIOBJ pBmp=Bitmap1.Detach(); Bitmap.Attach(pBmp); ScreenBitmapCriticalSection.Unlock(); InvalidateRect(NULL,FALSE); }
void CPreview::DrawPreviewBitmap() { if(!bContinue) return; MaxX=width(); MaxY=height(); QPixmap tmpBitmap(MaxX, MaxY); QPainter DC(&tmpBitmap); QRect rc=rect(); x1=4; x2=MaxX-4; y1=4; y2=MaxY-4; xw1=1; xw2=MaxX; yw1=0; yw2=MaxY; QBrush WhiteBrush(QColor(255,255,255)); QBrush GrayBrush(QColor(192,192,192)); QBrush BlueBrush(QColor(0,0,255)); QPen WhitePen(QColor(255,255,255)); QPen DarkPen(QColor(0,0,0)); QPen BluePen(QColor(0,0,255)); QPen YellowPen(QColor(255,255,0)); QPen WhitePen2(QColor(255,255,255),2); QPen GrayPen2(QColor(128,128,128),2); //******************************************************************** DC.setPen(BluePen); DC.fillRect(rc, BlueBrush); // DC.SelectObject(CFont::FromHandle((HFONT)GetStockObject(ANSI_VAR_FONT))); int xl=(int)((pDisplay->t1 - pDisplay->tB1)*(x2-x1)/(pDisplay->tB2-pDisplay->tB1)+x1+0.5); int xr=(int)((pDisplay->t2 - pDisplay->tB1)*(x2-x1)/(pDisplay->tB2-pDisplay->tB1)+x1+0.5); DC.setPen(WhitePen2); DC.moveTo(xw1,MaxY-yw2); DC.lineTo(xw2,MaxY-yw2); DC.moveTo(xw1,MaxY-yw2); DC.lineTo(xw1,MaxY-yw1); DC.setPen(GrayPen2); DC.moveTo(xw2,MaxY-yw1); DC.lineTo(xw2,MaxY-yw2); DC.moveTo(xw2,MaxY-yw1); DC.lineTo(xw1,MaxY-yw1); DrawWaveform(DC); DC.setPen(WhitePen2); DC.moveTo(xl,MaxY-y1); DC.lineTo(xr,MaxY-y1); DC.lineTo(xr,MaxY-y2); DC.lineTo(xl,MaxY-y2); DC.lineTo(xl,MaxY-y1); //******************************************************************** ScreenBitmapCriticalSection.lock(); Bitmap=tmpBitmap; bDrawBitmap=TRUE; ScreenBitmapCriticalSection.unlock(); repaint(FALSE); }