用VC开发股票分析软件(三)
2008-11-20 19:36:16 来源:WEB开发网void CStockView::OnDraw(CDC* pDC)
画K线,实际就是矩形+线条的组合。这个例子只说了画阳线的方法,可以类推
{
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
}
更多精彩
赞助商链接