法甲

做表界面的程序

2019-06-19 15:18:48来源:励志吧0次阅读

  这是程序的界面

  这个程序主要是为了练习画笔和画刷的使用.

  做这个小程序前先说个数学知识

  题目:已知圆心坐标和半径 一个圆上每隔6度取一个点.

  解法如下:

  圆心坐标是(x,y),半径为R.

  double PI=3.

  角度为i的点坐标

  x1=x+R*cos(i*6.0/180*PI);

  y1=y+R*sin(i*6.0/180*PI);

  注意 使用cos和sin函数要包含math.h头文件.

  相信要是理解了上面那个数学知识 这个程序也就有个基础的模型了

  现在我们开始做了 分两个步骤.

  步骤一:

  画如图片一所示的表盘

  下面的是它的主要代码:

  CDC *memdc=GetDC();

  //*********画圆

  CPen pen1(PS_SOLID,5,RGB(0,0,0));

  CPen *pOldPen=memdc-SelectObject(pen1);

  memdc-Ellipse(25,25,225,225);

  memdc-SelectObject(pOldPen);

  //*********画圆

  //**********画表的中点

  CBrush brush(RGB(0,0,255));

  CBrush *pOldbrush=memdc-SelectObject(brush);

  memdc-Ellipse(130,130,120,120);

  memdc-SelectObject(pOldbrush);

  //*********画表的中点

  int x1[60], y1[60], x2[60], y2[60];

  int x0=125, y0=125;

  int r = 100;

  double PI=3.;

  int h=3; //画出数字的基数

  for(int i=0; i60; i++)

  {

  x1[i] =int( x0 + r*cos(i*6.0/180*PI));

  y1[i] =int( y0 + r*sin(i*6.0/180*PI));

  if (i%5 == 0)

  {

  x2[i] =int( x0 + (r-10)*cos(i*6.0/180*PI));

  y2[i] = int(y0 + (r-10)*sin(i*6.0/180*PI));

  //************ 画出数字*****

  if(h12)

  h=1;

  CString str;

  rmat("%d",h);

  xtOut(x2[i],y2[i],str);

  h++;

  //************ 画出数字*****

  CPen pen2(PS_SOLID,4,RGB(0,255,0));

  CPen *pOldPen2=memdc-SelectObject(pen2);

  CPoint p1(x1[i],y1[i]),p2(x2[i],y2[i]);

  //*****画刻度

  memdc-MoveTo(p1);

  memdc-LineTo(p2);

  memdc-SelectObject(pOldPen2);

  //*****画刻度

  }

  步骤2.

  画时针,分针和秒针.

  我分别用三个函数来画.

  这是画时针的函数

  //****************画时针********

  void DrawHour(CDC* pDC)

  {

  int x0=125, y0=125; //圆点坐标

  int r = 100; //圆半径

  double PI=3.;

  // DrawHour函数是一个类中的成员函数.hour和minute是该类里的数据成员

  //hour表示当前时间的小时数值,minute表示分钟的数值

  int h=hour*5+45+(int)((double)minute/60*5);

  //这里判断时针的确切位置 加上(int)((double)minute/60*5)

  int x =int( x0 + r*cos(h*6.0/180*PI));

  int y =int( y0 + r*sin(h*6.0/180*PI));

  CPen pen2(PS_SOLID,10,RGB(0,255,0));

  CPen *pOldPen2=pDC-SelectObject(pen2);

  CPoint p1(x0,y0),p2(x,y);

  pDC-MoveTo(p1);

  pDC-LineTo(p2);

  pDC-SelectObject(pOldPen2);

  }

  画分针函数和秒针的差不多,我就写出一个.

  void DrawMinute(CDC* pDC)

  {

  int x0=125, y0=125;

  int r = 100;

  double PI=3.;

  // DrawMinute函数是一个类中的成员函数.minute是该类里的数据成员

  //minute表示分钟的数值

  int h=minute+45;

  int x =int( x0 + r*cos(h*6.0/180*PI));

  int y =int( y0 + r*sin(h*6.0/180*PI));

  CPen pen2(PS_SOLID,8,RGB(255,0,0));

  CPen *pOldPen2=pDC-SelectObject(pen2);

  CPoint p1(x0,y0),p2(x,y);

  pDC-MoveTo(p1);

  pDC-LineTo(p2);

  pDC-SelectObject(pOldPen2);

  }

  文章里的代码是该程序的主要代码.

  当然还有设置定时器,防止闪烁等.这些看下代码就知道了

  可能表示的方法不太好,但我想我已经把它的思想写出来了.

  我做这个程序主要是为了练习画笔和画刷的使用.

乳房胀痛小妙招
乳房胀痛应注意
乳房胀痛有硬块
分享到: