|
画笔画刷和字体:
第一步:实例化。如,CPen pen;
第二步:创建对象。如 pen.crate……
第三步:获取 dc指针:dc->selectobject(&pen);
/***************** 常用函数*******************/
一.关于字体:
字体的创建(粘贴备用):
CFont fon;
fon.CreateFontA(100,0,900,0,FW_BOLD,false,false,false,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"楷体_GB2312");
dc->SelectObject(&fon);
dc->SetTextColor(RGB(255,0,255));
dc->SetBkMode(TRANSPARENT);//无背景
dc->TextOutA(200,400,"中国人民银行");
二.画弧画饼
首先创建画刷;
dc->arc();画弧
dc->pie();画饼
注意,以上两个函数都有?个int型参数。
- /****************获取客户去*********************/
- RECT rec; //实例化RECT
- GetClientRect( &rec);//CWnd
- CDC *dc=GetDC();
- dc->Rectangle(0,0,rec.right,rec.bottom);//RECT的使用。这儿完成在客户去边沿画一个矩形
-
- /**********徐老师做的一个比例图**************/
- void Cpro003View::drawpie(float angle1,float angle2,int xx1,int yy1,int r,COLORREF co)
- {
- CDC *dc=GetDC();
- CPen pen;
- pen.CreatePen(PS_SOLID,1,co);
- dc->SelectObject(&pen);
- CBrush bru;
- bru.CreateSolidBrush(co);
- dc->SelectObject(&bru);
-
- float x3=xx1+r*cos(angle1*3.14159/180.0);
- float y3=yy1-r*sin(angle1*3.14159/180.0);
- float x4=xx1+r*cos(angle2*3.14159/180.0);
- float y4=yy1-r*sin(angle2*3.14159/180.0);
-
-
- dc->Pie(xx1-r,yy1-r,xx1+r,yy1+r,x3,y3,x4,y4);
- ReleaseDC(dc);//Release掉CDC就不需要再bru.deleteobject().这儿需要注意。
- }
- void Cpro003View::OnLButtonDown(UINT nFlags, CPoint point)
- {
- // TODO: 在此添加消息处理程序代码和/或调用默认值
- float arr[]={0.1,0.2,0.3,0.25,0.1,0.05};
- COLORREF arrco[]={RGB(255,0,0),RGB(0,0,255),RGB(255,255,0),RGB(0,255,0),RGB(255,0,255),RGB(0,255,255)};
- ///如何获取客户区尺寸
- RECT rec;
- //LPRECT lpRect
- //LPRECT RECT *
- GetClientRect( &rec);//CWnd
-
- CDC *dc=GetDC();
- dc->Rectangle(0,0,rec.right,rec.bottom);
- drawpie(0,arr[0]*360.0,400,300,200,arrco[0]);
- drawpie(arr[0]*360.0,arr[1]*360.0+arr[0]*360.0,400,300,200,arrco[1]);
- drawpie(arr[1]*360.0+arr[0]*360.0,arr[2]*360.0+arr[1]*360.0+arr[0]*360.0,400,300,200,arrco[2]);
- drawpie(arr[2]*360.0+arr[1]*360.0+arr[0]*360.0,arr[3]*360.0+arr[2]*360.0+arr[1]*360.0+arr[0]*360,400,300,200,arrco[3]);
- drawpie(arr[3]*360.0+arr[2]*360.0+arr[1]*360.0+arr[0]*360,arr[4]*360.0+arr[3]*360.0+arr[2]*360.0+arr[1]*360+arr[0]*360,400,300,200,arrco[4]);
- drawpie(arr[4]*360.0+arr[3]*360.0+arr[2]*360.0+arr[1]*360+arr[0]*360,360,400,300,200,arrco[5]);//自己写的函数记得在视图类头文件声明
-
- dc->MoveTo(0,600);
- dc->LineTo(700,600);
- for(int i=0;i<700;i+=10)
- {
- if(i%100!=0)
- {
- dc->MoveTo(i,600-5);
- dc->LineTo(i,600+5);
- }
- else
- {
- dc->MoveTo(i,600-8);
- dc->LineTo(i,600+8);
- }
- }
- ReleaseDC(dc);
-
- // drawpie(arr[1]*360.0,arr[2]*360.0,400,300,200,arrco[2]);
- // drawpie(arr[2]*360.0,arr[3]*360.0,400,300,200,arrco[3]);
- // drawpie(arr[3]*360.0,arr[4]*360.0,400,300,200,arrco[4]);
- // drawpie(arr[4]*360.0,arr[5]*360.0,400,300,200,arrco[5]);
- //drawpie(0,30,400,300,200,RGB(255,0,0));
- /*for(int i=0;i<6;i++)
- {
- if(i<5)
- drawpie(arr[i]*360.0,arr[i+1]*360.0,400,300,200,arrco[i]);
- else
- drawpie(arr[i]*360.0,arr[0]*360.0,400,300,200,arrco[i]);
- }*/
- /////如何获取客户区尺寸
- //RECT rec;
- ////LPRECT lpRect
- ////LPRECT RECT *
- //GetClientRect( &rec);
- CView::OnLButtonDown(nFlags, point);
- }
-
复制代码
|
|