CSDN博客

img masterjames

用VC开发股票分析软件(三)

发表于2008/9/28 18:16:00  1828人阅读

  1. void CStockView::OnDraw(CDC* pDC) 
  2. {
  3.     CStockDoc* pDoc = GetDocument();
  4.     ASSERT_VALID(pDoc);
  5.     //以下程序用来画一根阳K线(相对复杂点纺锤线:有上影线和下影线的实阳线),
  6.     //为了说明方便,数字都用的整形,便于开发。
  7.     
  8.     CClientDC mjClientDC(this) ;
  9.     OnPrepareDC(&mjClientDC);
  10.     
  11.     CRect rc;
  12.     GetClientRect(&rc);
  13.     CBrush br(RGB(0,0,0));
  14.     pDC->FillRect(&rc,&br);//背景变成黑色
  15.     CBrush *pBrush;
  16.     CBrush mjSunBrush; 
  17.     
  18.     CPen *pPen;
  19.     CPen mjSunPen ;
  20.     mjSunBrush.CreateSolidBrush(RGB(255,0,0));//红色
  21.     pBrush = mjClientDC.SelectObject(&mjSunBrush);//取得刷子指针
  22.     
  23.     mjSunPen.CreatePen(PS_SOLID,1,RGB(255,0,0));
  24.     pPen = mjClientDC.SelectObject(&mjSunPen);//取得画笔指针
  25.     int ClosePrice = 97 ;   // 调整不同的收盘价,图形会有变化,画阴线判段一下,RGB成绿色就可以了。
  26.     int BeginPrice = 90 ;
  27.     int MinPrice = 85;
  28.     int MaxPrice = 99;
  29.     
  30.     
  31.     int x = 300;int y = 400 ;//阳线的起始位置
  32.     
  33.     int KlineWidth = 10 ;
  34.     int MidLine = KlineWidth / 2 ; //中心画线位置
  35.     //K线实体只需要两个点座标,就是左下角和右上角的两个点
  36.     
  37.     int x1 = x  ; 
  38.     int y1 = y - (BeginPrice-MinPrice) ;//第一个点坐标,MFC是从上往下画的(0,0)是左上角第一个点。
  39.     
  40.     
  41.     int x2 = x + KlineWidth;
  42.     int y2 = y - ((BeginPrice-MinPrice) + (ClosePrice - BeginPrice));
  43.     mjClientDC.Rectangle(CRect(x1,y1,x2,y2));//K线实体画完
  44.     //画影线
  45.     int x3 = x1 + MidLine ;
  46.     int y3 = y - (MaxPrice-MinPrice) ; 
  47.     int x4 = x3 ;
  48.     int y4 = y ;//中线点坐标
  49.     mjClientDC.MoveTo(x3,y3);
  50.     mjClientDC.LineTo(x3,y4);
  51.     ReleaseDC(pDC);
  52.     // TODO: add draw code for native data here
  53. }
  54. 画K线,实际就是矩形+线条的组合。这个例子只说了画阳线的方法,可以类推
0 0

相关博文

我的热门文章

img
取 消
img