- void CStockView::OnDraw(CDC* pDC)
- {
- CStockDoc* pDoc = GetDocument();
- ASSERT_VALID(pDoc);
- //以下程序用来画一根阳K线(相对复杂点纺锤线:有上影线和下影线的实阳线),
- //为了说明方便,数字都用的整形,便于开发。
- CClientDC mjClientDC(this) ;
- OnPrepareDC(&mjClientDC);
- CRect rc;
- GetClientRect(&rc);
- CBrush br(RGB(0,0,0));
- pDC->FillRect(&rc,&br);//背景变成黑色
- CBrush *pBrush;
- CBrush mjSunBrush;
- CPen *pPen;
- CPen mjSunPen ;
- mjSunBrush.CreateSolidBrush(RGB(255,0,0));//红色
- pBrush = mjClientDC.SelectObject(&mjSunBrush);//取得刷子指针
- mjSunPen.CreatePen(PS_SOLID,1,RGB(255,0,0));
- pPen = mjClientDC.SelectObject(&mjSunPen);//取得画笔指针
- int ClosePrice = 97 ; // 调整不同的收盘价,图形会有变化,画阴线判段一下,RGB成绿色就可以了。
- int BeginPrice = 90 ;
- int MinPrice = 85;
- int MaxPrice = 99;
- int x = 300;int y = 400 ;//阳线的起始位置
- int KlineWidth = 10 ;
- int MidLine = KlineWidth / 2 ; //中心画线位置
- //K线实体只需要两个点座标,就是左下角和右上角的两个点
- int x1 = x ;
- int y1 = y - (BeginPrice-MinPrice) ;//第一个点坐标,MFC是从上往下画的(0,0)是左上角第一个点。
- int x2 = x + KlineWidth;
- int y2 = y - ((BeginPrice-MinPrice) + (ClosePrice - BeginPrice));
- mjClientDC.Rectangle(CRect(x1,y1,x2,y2));//K线实体画完
- //画影线
- int x3 = x1 + MidLine ;
- int y3 = y - (MaxPrice-MinPrice) ;
- int x4 = x3 ;
- int y4 = y ;//中线点坐标
- mjClientDC.MoveTo(x3,y3);
- mjClientDC.LineTo(x3,y4);
- ReleaseDC(pDC);
- // TODO: add draw code for native data here
- }
- 画K线,实际就是矩形+线条的组合。这个例子只说了画阳线的方法,可以类推
用VC开发股票分析软件(三)
最新推荐文章于 2023-02-19 11:52:12 发布