亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? graphctrl.cpp

?? wince下的畫二維曲線的的一個(gè)程序
?? CPP
字號(hào):
#include "stdafx.h"
#include "resource.h"
#include "GraphCtrl.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


MECGraphCtrl::MECGraphCtrl()
{
	m_nLastIndexPoint = 0;
	m_nYDecimals = 0 ;
	m_nXDecimals = 0 ;

    m_dLowerLimit = 0 ;
	m_dUpperLimit =  100 ;
	m_dRange      =  m_dUpperLimit - m_dLowerLimit ;   

	m_dXLower = 0 ;
	m_dXUpper =  100 ;
	m_XRange      =  m_dXUpper - m_dXLower;   

	m_crBackColor  = RGB(  0,   0,   0) ;  
	m_crGridColor  = RGB(  0, 255, 255) ;  
	m_crPlotColor  = RGB(255, 255, 255) ;  


	m_penPlot.CreatePen(PS_SOLID, 0, m_crPlotColor) ;
	m_brushBack.CreateSolidBrush(m_crBackColor) ;

	m_strXUnitsString.Format(_T("Time in seconds")) ;  
  

	m_pbitmapOldGrid = NULL ;
	m_pbitmapOldPlot = NULL ;
}

MECGraphCtrl::~MECGraphCtrl()
{
}


BEGIN_MESSAGE_MAP(MECGraphCtrl, CWnd)
	//{{AFX_MSG_MAP(MECGraphCtrl)
	ON_WM_SIZE()
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

void MECGraphCtrl::AppendPoint(double dPointX, double dPointY)
{
	m_oNewPoint.x = dPointX;
	m_oNewPoint.y = dPointY;

	m_oPoints[m_nLastIndexPoint].x = m_oNewPoint.x;
	m_oPoints[m_nLastIndexPoint].y = m_oNewPoint.y;
	
	DrawPoints();

	m_nLastIndexPoint++;

	Invalidate();
}
void MECGraphCtrl::DrawPoints()
{
  CPen *oldPen ;
  CRect rectCleanUp ;

  if (m_dcPlot.GetSafeHdc() != NULL)
  {
    
    m_dcPlot.BitBlt(m_rectPlot.left, m_rectPlot.top+1, 
                    m_nPlotWidth, m_nPlotHeight, &m_dcPlot, 
                    m_rectPlot.left, m_rectPlot.top+1, 
                    SRCCOPY) ;

      m_dcPlot.FillRect(rectCleanUp, &m_brushBack) ;

      oldPen = m_dcPlot.SelectObject(&m_penPlot) ;
	
	if(m_nLastIndexPoint == 0)
	{
		int nXOrigin = m_rectPlot.left  ;
		int nYOrigin = m_rectPlot.bottom ;
		m_dcPlot.MoveTo (nXOrigin, nYOrigin) ;

		m_dPoints[m_nLastIndexPoint].x = m_rectPlot.left+(long)((m_oPoints[m_nLastIndexPoint].x - m_dXLower) * m_dHorizontalFactor) ; 
		m_dPoints[m_nLastIndexPoint].y = m_rectPlot.bottom - 
            (long)((m_oPoints[m_nLastIndexPoint].y - m_dLowerLimit) * m_dVerticalFactor) ;

		m_dcPlot.LineTo ((int)m_dPoints[m_nLastIndexPoint].x, (int)m_dPoints[m_nLastIndexPoint].y) ;
	}
	else
	{
		if (m_dPoints[m_nLastIndexPoint].x >= m_rectPlot.left)
			m_dcPlot.MoveTo ((int)m_dPoints[m_nLastIndexPoint-1].x, (int)m_dPoints[m_nLastIndexPoint-1].y) ;
		m_dPoints[m_nLastIndexPoint].x = m_rectPlot.left+(long)((m_oPoints[m_nLastIndexPoint-1].x - m_dXLower) * m_dHorizontalFactor) ; 
		m_dPoints[m_nLastIndexPoint].y = m_rectPlot.bottom - 
            (long)((m_oPoints[m_nLastIndexPoint-1].y - m_dLowerLimit) * m_dVerticalFactor) ;
		if (m_dPoints[m_nLastIndexPoint].x >= m_rectPlot.left)
			m_dcPlot.LineTo ((int)m_dPoints[m_nLastIndexPoint].x, (int)m_dPoints[m_nLastIndexPoint].y) ;
	}
	
	if ((m_dPoints[m_nLastIndexPoint-1].y <= m_rectPlot.top) || (m_dPoints[m_nLastIndexPoint].y <= m_rectPlot.top))
      m_dcPlot.FillRect(CRect((int)m_dPoints[m_nLastIndexPoint].x, m_rectClient.top, (int)m_dPoints[m_nLastIndexPoint].x+1, m_rectPlot.top+1), &m_brushBack) ;

    if ((m_dPoints[m_nLastIndexPoint-1].y >= m_rectPlot.bottom) || (m_dPoints[m_nLastIndexPoint].y >= m_rectPlot.bottom))
      m_dcPlot.FillRect(CRect((int)m_dPoints[m_nLastIndexPoint].x, m_rectPlot.bottom+1, (int)m_dPoints[m_nLastIndexPoint].x+1, m_rectClient.bottom+1), &m_brushBack) ;

   
    m_dcPlot.SelectObject(oldPen) ;
  }
}
void MECGraphCtrl::InvalidateCtrl()
{

	int nCharacters ;

	CPen *oldPen ;
	CPen solidPen(PS_SOLID, 0, m_crGridColor) ;
	CFont axisFont, yUnitFont, *oldFont ;
	CString strTemp ;

	CClientDC dc(this) ;  

	if (m_dcGrid.GetSafeHdc() == NULL)
	{
		m_dcGrid.CreateCompatibleDC(&dc) ;
		m_bitmapGrid.CreateCompatibleBitmap(&dc, m_nClientWidth, m_nClientHeight) ;
		m_pbitmapOldGrid = m_dcGrid.SelectObject(&m_bitmapGrid) ;
	}
  
	m_dcGrid.SetBkColor (m_crBackColor) ;
	m_dcGrid.FillRect(m_rectClient, &m_brushBack) ;
	  nCharacters = abs((int)log10(fabs(m_dUpperLimit))) ;
	  nCharacters = max(nCharacters, abs((int)log10(fabs(m_dLowerLimit)))) ;

	  nCharacters = nCharacters + 4 + m_nYDecimals ;  
	  m_rectPlot.left = m_rectClient.left + 6*(nCharacters) ;
	  m_nPlotWidth    = m_rectPlot.Width() ;

	  oldPen = m_dcGrid.SelectObject (&solidPen) ; 
	  m_dcGrid.MoveTo (m_rectPlot.left, m_rectPlot.top) ;
	  m_dcGrid.LineTo (m_rectPlot.right+1, m_rectPlot.top) ;
	  m_dcGrid.LineTo (m_rectPlot.right+1, m_rectPlot.bottom+1) ;
	  m_dcGrid.LineTo (m_rectPlot.left, m_rectPlot.bottom+1) ;
	  m_dcGrid.LineTo (m_rectPlot.left, m_rectPlot.top) ;
	  m_dcGrid.SelectObject (oldPen) ;
	  
	  yUnitFont.CreateFont (14, 0, 900, 0, 300,
                       FALSE, FALSE, 0, ANSI_CHARSET,
                       OUT_DEFAULT_PRECIS, 
                       CLIP_DEFAULT_PRECIS,
                       DEFAULT_QUALITY, 
                       DEFAULT_PITCH|FF_SWISS, _T("Arial")) ;
	  axisFont.CreateFont (14, 0, 0, 0, 300,
                       FALSE, FALSE, 0, ANSI_CHARSET,
                       OUT_DEFAULT_PRECIS, 
                       CLIP_DEFAULT_PRECIS,
                       DEFAULT_QUALITY, 
                       DEFAULT_PITCH|FF_SWISS, _T("Arial")) ;
  
	  oldFont = m_dcGrid.SelectObject(&axisFont) ;

	  
  
  // y max
  m_dcGrid.SetTextColor (m_crGridColor) ;
  strTemp.Format (_T("%.*lf"), m_nYDecimals, m_dUpperLimit) ;
  int nYMaxLength = strTemp.GetLength();
  if(m_nYDecimals == 2)
	m_dcGrid.ExtTextOut(m_rectPlot.left-30,m_rectPlot.top,ETO_CLIPPED|ETO_OPAQUE,NULL,strTemp,nYMaxLength,NULL);

  // y min
  strTemp.Format (_T("%.*lf"), m_nYDecimals, m_dLowerLimit) ;
  nYMaxLength = strTemp.GetLength();
  if(m_nYDecimals == 2)
	m_dcGrid.ExtTextOut(m_rectPlot.left-30, m_rectPlot.bottom -10,ETO_CLIPPED|ETO_OPAQUE,NULL,strTemp,nYMaxLength,NULL);

  strTemp.Format (_T("%.*lf"), m_nXDecimals, m_dXLower) ;
  nYMaxLength = strTemp.GetLength();
  m_dcGrid.ExtTextOut(m_rectPlot.left,m_rectPlot.bottom+4,ETO_CLIPPED,NULL,strTemp,nYMaxLength,NULL);

  // x max
  strTemp.Format (_T("%.*lf"), m_nXDecimals, m_dXUpper) ;
  nYMaxLength = strTemp.GetLength();
  m_dcGrid.ExtTextOut(m_rectPlot.right-25,m_rectPlot.bottom+4,ETO_CLIPPED,NULL,strTemp,nYMaxLength,NULL);

  // x units
  
  m_dcGrid.ExtTextOut (((m_rectPlot.left+m_rectPlot.right)/2)-30, 
                    m_rectPlot.bottom+12, ETO_CLIPPED,NULL,m_strXUnitsString,m_strXUnitsString.GetLength() ,NULL) ;

  // restore the font
  m_dcGrid.SelectObject(oldFont) ;

  // y units
  oldFont = m_dcGrid.SelectObject(&yUnitFont) ;
  m_dcGrid.ExtTextOut (((m_rectClient.left+m_rectPlot.left)/2)-20, 
                    ((m_rectPlot.bottom+m_rectPlot.top)/2)+38, ETO_CLIPPED,NULL,m_strYUnitsString,m_strYUnitsString.GetLength() ,NULL) ;
  m_dcGrid.SelectObject(oldFont) ;

    if (m_dcPlot.GetSafeHdc() == NULL)
  {
    m_dcPlot.CreateCompatibleDC(&dc) ;
    m_bitmapPlot.CreateCompatibleBitmap(&dc, m_nClientWidth, m_nClientHeight) ;
    m_pbitmapOldPlot = m_dcPlot.SelectObject(&m_bitmapPlot) ;
  }

   m_dcPlot.SetBkColor (m_crBackColor) ;
  m_dcPlot.FillRect(m_rectClient, &m_brushBack) ;

  InvalidateRect(m_rectClient) ;


}
BOOL MECGraphCtrl::Create(DWORD dwStyle, const RECT& rect, 
                         CWnd* pParentWnd, UINT nID) 
{
  BOOL result ;
  static CString className = AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW) ;
  result = CWnd::CreateEx(WS_EX_CLIENTEDGE | WS_EX_STATICEDGE, 
                          className, NULL, dwStyle, 
                          rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top,
                          pParentWnd->GetSafeHwnd(), (HMENU)nID) ;
  if (result != 0)
    InvalidateCtrl() ;
  return result ;
} // Create
void MECGraphCtrl::OnSize(UINT nType, int cx, int cy) 
{
	CWnd::OnSize(nType, cx, cy);
	
	GetClientRect(m_rectClient) ;

	m_nClientHeight = m_rectClient.Height() ;
	m_nClientWidth  = m_rectClient.Width() ;

	m_rectPlot.left   = 20 ;  
	m_rectPlot.top    = 10 ;
	m_rectPlot.right  = m_rectClient.right-10 ;
	m_rectPlot.bottom = m_rectClient.bottom-25 ;

	m_nPlotHeight = m_rectPlot.Height() ;
	m_nPlotWidth  = m_rectPlot.Width() ;

	m_dVerticalFactor = (double)m_nPlotHeight / m_dRange ; 

}

void MECGraphCtrl::OnPaint() 
{
	CPaintDC dc(this); 
	

	CDC memDC ;
	CBitmap memBitmap ;
	CBitmap* oldBitmap ; 
  
	memDC.CreateCompatibleDC(&dc) ;
	memBitmap.CreateCompatibleBitmap(&dc, m_nClientWidth, m_nClientHeight) ;
	oldBitmap = (CBitmap *)memDC.SelectObject(&memBitmap) ;

	if (memDC.GetSafeHdc() != NULL)
	{
	
		memDC.BitBlt(0, 0, m_nClientWidth, m_nClientHeight, 
			         &m_dcGrid, 0, 0, SRCCOPY) ;
		// now add the plot on top as a "pattern" via SRCPAINT.
		// works well with dark background and a light plot
		memDC.BitBlt(0, 0, m_nClientWidth, m_nClientHeight, 
			         &m_dcPlot, 0, 0, SRCPAINT) ;  //SRCPAINT
		// finally send the result to the display
		dc.BitBlt(0, 0, m_nClientWidth, m_nClientHeight, 
			      &memDC, 0, 0, SRCCOPY) ;
	}

	memDC.SelectObject(oldBitmap) ;
	// Do not call CWnd::OnPaint() for painting messages
}
void MECGraphCtrl::SetRange(double dLower, double dUpper, int nDecimalPlaces)
{
    ASSERT(dUpper > dLower) ;

    m_dLowerLimit     = dLower ;
	m_dUpperLimit     = dUpper ;
	m_nYDecimals      = nDecimalPlaces ;
	m_dRange          = m_dUpperLimit - m_dLowerLimit ;
	m_dVerticalFactor = (double)m_nPlotHeight / m_dRange ; 
    // clear out the existing garbage, re-start with a clean plot
    InvalidateCtrl() ;

}
void MECGraphCtrl::SetXUnits(CString string)
{
  m_strXUnitsString = string ;
  // clear out the existing garbage, re-start with a clean plot
  InvalidateCtrl() ;
}  // SetXUnits

void MECGraphCtrl::SetYUnits(CString string)
{
  m_strYUnitsString = string ;
  // clear out the existing garbage, re-start with a clean plot
  InvalidateCtrl() ;
}
void MECGraphCtrl::SetGridColor(COLORREF color)
{
  m_crGridColor = color ;
  // clear out the existing garbage, re-start with a clean plot
  InvalidateCtrl() ;
}  // SetGridColor
void MECGraphCtrl::SetPlotColor(COLORREF color)
{
  m_crPlotColor = color ;
  m_penPlot.DeleteObject() ;
  m_penPlot.CreatePen(PS_SOLID, 2, m_crPlotColor) ;
  // clear out the existing garbage, re-start with a clean plot
  InvalidateCtrl() ;
}  // SetPlotColor
void MECGraphCtrl::SetBackgroundColor(COLORREF color)
{
  m_crBackColor = color ;
  m_brushBack.DeleteObject() ;
  m_brushBack.CreateSolidBrush(m_crBackColor) ;
  // clear out the existing garbage, re-start with a clean plot
  InvalidateCtrl() ;
}  // SetBackgroundColor
void MECGraphCtrl::SetXRange(double dLower, double dUpper, int nDecimalPlaces)
{
	ASSERT(dUpper > dLower) ;
	m_dXLower     = dLower ;
	m_dXUpper     = dUpper ;
	m_nXDecimals  = nDecimalPlaces ;
	m_XRange          = m_dXUpper - m_dXLower ;
	m_dHorizontalFactor = (double)m_nPlotWidth / m_XRange ; 
    // clear out the existing garbage, re-start with a clean plot
	InvalidateCtrl() ;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产拍欧美日韩视频二区| 日本一区二区三区电影| 国产成人av福利| 亚洲成人黄色小说| 欧美激情一区二区三区不卡| 91精品久久久久久久99蜜桃| 成人av免费网站| 国产麻豆精品一区二区| 视频在线观看国产精品| 亚洲欧美欧美一区二区三区| 国产午夜久久久久| 欧美成人精精品一区二区频| 久久久亚洲精华液精华液精华液| 欧美日韩三级在线| 91传媒视频在线播放| 成人av免费在线观看| 国产一区二区导航在线播放| 免费亚洲电影在线| 石原莉奈在线亚洲三区| 亚洲五码中文字幕| 日韩理论片网站| 国产精品高潮呻吟| 国产日韩欧美a| 欧美成人精品福利| 欧美大胆一级视频| 欧美一区二区精品| 欧美一区二区三区在线电影| 欧美日韩国产在线播放网站| 在线观看www91| 色素色在线综合| 91年精品国产| 色综合久久久久久久久| av不卡免费电影| 成人国产精品免费| 成人三级伦理片| www.久久久久久久久| av中文字幕不卡| eeuss鲁一区二区三区| 成人免费毛片高清视频| 高清不卡在线观看av| 懂色中文一区二区在线播放| 粉嫩在线一区二区三区视频| 成人午夜精品在线| av在线播放成人| 91美女蜜桃在线| 欧美午夜在线观看| 欧美日韩aaa| 欧美一区二区三区视频在线观看| 91精品中文字幕一区二区三区| 欧美一区二区网站| 精品国产一区二区三区久久久蜜月| 精品99999| 国产农村妇女毛片精品久久麻豆 | 一本大道久久a久久精品综合| 色综合色综合色综合 | 国产成人精品免费在线| 高清成人免费视频| 色综合天天综合狠狠| 欧美日韩一级片在线观看| 在线观看91精品国产麻豆| 日韩亚洲欧美在线观看| 久久欧美中文字幕| 亚洲日本乱码在线观看| 亚洲国产三级在线| 麻豆精品久久精品色综合| 国产乱人伦精品一区二区在线观看 | 91香蕉国产在线观看软件| 在线亚洲免费视频| 日韩欧美一区在线观看| 国产亚洲欧美色| 一区二区三区在线免费播放| 三级久久三级久久久| 国产尤物一区二区在线| 一本到不卡免费一区二区| 欧美久久久久久久久| 国产日韩欧美高清在线| 亚洲综合成人网| 韩国成人在线视频| 日本道精品一区二区三区| 日韩欧美中文一区二区| 亚洲欧洲美洲综合色网| 热久久免费视频| jiyouzz国产精品久久| 51精品秘密在线观看| 国产精品麻豆久久久| 婷婷成人综合网| 本田岬高潮一区二区三区| 国产精品国模大尺度视频| 亚洲成人av一区二区三区| 国产盗摄一区二区| 在线播放欧美女士性生活| 国产精品污www在线观看| 日本成人超碰在线观看| 99久久久国产精品| xnxx国产精品| 五月婷婷久久丁香| 99国产精品国产精品毛片| 日韩一级完整毛片| 亚洲电影一区二区三区| 成+人+亚洲+综合天堂| 日韩一级黄色片| 一区二区三区在线看| 粉嫩av一区二区三区在线播放| 欧美久久一区二区| 亚洲最大色网站| 成人视屏免费看| 日韩欧美国产高清| 亚洲韩国精品一区| 91丝袜美腿高跟国产极品老师 | 成人动漫精品一区二区| 日韩欧美一级二级三级久久久| 亚洲精品乱码久久久久久| 国产精品性做久久久久久| 91精品国产色综合久久不卡电影| 亚洲欧美另类小说视频| 国产mv日韩mv欧美| 337p日本欧洲亚洲大胆精品| 五月天久久比比资源色| 91成人在线精品| 亚洲精品视频免费观看| 成人av网站在线观看| 国产日产亚洲精品系列| 国产综合色产在线精品| 日韩欧美成人激情| 蜜桃av一区二区三区| 91精品国产手机| 午夜不卡av在线| 欧美日韩的一区二区| 亚洲国产综合在线| 欧美专区在线观看一区| 一区二区免费视频| 在线视频一区二区三| 亚洲国产精品综合小说图片区| 色婷婷av一区二区三区gif| 亚洲天堂成人在线观看| 91网址在线看| 精品国产123| 国产伦精品一区二区三区免费| 精品国产凹凸成av人网站| 国内精品在线播放| 国产午夜精品美女毛片视频| 国产91精品欧美| 国产精品蜜臀在线观看| 91女神在线视频| 亚洲国产视频一区| 在线电影一区二区三区| 蜜臀av在线播放一区二区三区| 欧美成人猛片aaaaaaa| 国产精品18久久久久| 国产精品天美传媒沈樵| 91在线一区二区| 亚洲国产成人va在线观看天堂| 911精品产国品一二三产区| 美国欧美日韩国产在线播放| 久久亚洲免费视频| 成人高清视频在线观看| 一片黄亚洲嫩模| 欧美一级精品大片| 国产精品99久久久| 日韩理论在线观看| 在线观看91av| 国产精品夜夜爽| 一区二区三区高清| 欧美一区二区精美| 国产91在线观看| 亚洲综合色区另类av| 日韩欧美自拍偷拍| 成人a免费在线看| 亚洲va欧美va国产va天堂影院| 日韩精品一区二区三区在线| 不卡欧美aaaaa| 日韩精品电影一区亚洲| 国产欧美一二三区| 精品视频全国免费看| 国内精品视频666| 亚洲精选视频免费看| 欧美一区二区免费视频| 99久久亚洲一区二区三区青草| 亚洲国产精品久久人人爱| 久久精品在线观看| 欧美影院午夜播放| 国产一区二区福利视频| 亚洲主播在线播放| 精品女同一区二区| 欧洲av一区二区嗯嗯嗯啊| 国产一区三区三区| 亚洲第一激情av| 国产亚洲欧洲一区高清在线观看| 欧美日韩亚洲综合在线| 国产99久久久久久免费看农村| 亚洲女同ⅹxx女同tv| 久久免费美女视频| 欧美日本一区二区| 99精品在线免费| 国产一区二区三区四区五区美女 | 精品99999| 欧美日韩免费一区二区三区| 成人性生交大片免费看中文网站| 日本亚洲一区二区| 一区二区三区电影在线播|