找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2853|回复: 0
打印 上一主题 下一主题
收起左侧

vc++关于画笔画刷和字体及客户去的获取

[复制链接]
跳转到指定楼层
楼主
ID:104287 发表于 2016-1-31 02:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
画笔画刷和字体:
第一步:实例化。如,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型参数。

  1. /****************获取客户去*********************/
  2. RECT rec; //实例化RECT
  3. GetClientRect( &rec);//CWnd
  4. CDC *dc=GetDC();
  5. dc->Rectangle(0,0,rec.right,rec.bottom);//RECT的使用。这儿完成在客户去边沿画一个矩形

  6. /**********徐老师做的一个比例图**************/
  7. void Cpro003View::drawpie(float angle1,float angle2,int xx1,int yy1,int r,COLORREF co)
  8. {
  9.   CDC *dc=GetDC();
  10.   CPen pen;
  11.   pen.CreatePen(PS_SOLID,1,co);
  12.   dc->SelectObject(&pen);
  13.   CBrush bru;
  14.   bru.CreateSolidBrush(co);
  15.   dc->SelectObject(&bru);

  16.   float x3=xx1+r*cos(angle1*3.14159/180.0);
  17.   float y3=yy1-r*sin(angle1*3.14159/180.0);

  18.   float x4=xx1+r*cos(angle2*3.14159/180.0);
  19.   float y4=yy1-r*sin(angle2*3.14159/180.0);
  20.   
  21.   
  22.    dc->Pie(xx1-r,yy1-r,xx1+r,yy1+r,x3,y3,x4,y4);


  23.   ReleaseDC(dc);//Release掉CDC就不需要再bru.deleteobject().这儿需要注意。
  24. }
  25. void Cpro003View::OnLButtonDown(UINT nFlags, CPoint point)
  26. {
  27. // TODO: 在此添加消息处理程序代码和/或调用默认值
  28. float arr[]={0.1,0.2,0.3,0.25,0.1,0.05};
  29. 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)};

  30. ///如何获取客户区尺寸
  31. RECT rec;
  32. //LPRECT lpRect   
  33. //LPRECT    RECT *
  34. GetClientRect( &rec);//CWnd



  35.     CDC *dc=GetDC();

  36. dc->Rectangle(0,0,rec.right,rec.bottom);


  37.      drawpie(0,arr[0]*360.0,400,300,200,arrco[0]);
  38. drawpie(arr[0]*360.0,arr[1]*360.0+arr[0]*360.0,400,300,200,arrco[1]);
  39. 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]);
  40. 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]);
  41. 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]);
  42. 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]);//自己写的函数记得在视图类头文件声明
  43.    
  44. dc->MoveTo(0,600);
  45. dc->LineTo(700,600);

  46. for(int i=0;i<700;i+=10)
  47. {
  48. if(i%100!=0)
  49. {
  50. dc->MoveTo(i,600-5);
  51. dc->LineTo(i,600+5);
  52. }
  53. else
  54. {
  55. dc->MoveTo(i,600-8);
  56. dc->LineTo(i,600+8);
  57. }



  58. }
  59.     ReleaseDC(dc);

  60. // drawpie(arr[1]*360.0,arr[2]*360.0,400,300,200,arrco[2]);
  61. // drawpie(arr[2]*360.0,arr[3]*360.0,400,300,200,arrco[3]);
  62. // drawpie(arr[3]*360.0,arr[4]*360.0,400,300,200,arrco[4]);
  63. // drawpie(arr[4]*360.0,arr[5]*360.0,400,300,200,arrco[5]);
  64. //drawpie(0,30,400,300,200,RGB(255,0,0));
  65.     /*for(int i=0;i<6;i++)
  66. {
  67.         if(i<5)
  68. drawpie(arr[i]*360.0,arr[i+1]*360.0,400,300,200,arrco[i]);
  69. else
  70. drawpie(arr[i]*360.0,arr[0]*360.0,400,300,200,arrco[i]);

  71. }*/

  72. /////如何获取客户区尺寸
  73. //RECT rec;
  74. ////LPRECT lpRect   
  75. ////LPRECT    RECT *
  76. //GetClientRect( &rec);




  77. CView::OnLButtonDown(nFlags, point);
  78. }
复制代码






分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表