[C#] Form을 이용한 시계만들기

강서현·2022년 6월 18일
0

C#

목록 보기
1/23

WinForm은 GDI+를 사용
GDI+란 디바이스 드라이버에 독립적으로 프로그래밍을 할 수 있도록 그래픽 제공해주는 모든 기능

  • System.Drawing NameSpace
  1. 클래스 및 구조체(Brush/Font/Graphics/Image/Pen/Color/Point/Rectangle/Size)
  2. Pen 클래스 - 선과 곡선 그리는데 사용
  3. Color 구조체 - 색상 이름,FromArgb() 등
  4. Brush 클래스 - 도형에 색상을 적용
  5. Font 클래스
  6. Graphics 클래스(RotateTransform DrawLine, DrawRectangle 등)
  • 시계를 만들기 위해 필요한 필드
Graphics g;
private bool aClock_Flag = false;
private Point Center;
private double radius;
private int hourHands; //시침,초침,분침의 길이
private int minHands;
private int secHands;
  • 시계바늘 그리는 방법

    DateTime c = DateTime.Now;

<길이>
hourHand = (int)(radius 0.45)
minHand = (int)(radius
0.55)
secHand = (int)(radius * 0.65)

<각도>
180:PI = 각도 라디안
라디안=으로 바꾸기
시침 = (c.Hour % 12)
30 + c.Minute / 60.0) 30 Math.PI/180;
분침 = (c.Minute c.Second / 60.0) 6 Math.PI / 180;
초침 = (c.Second)
6 * Math.PI / 180;

DrawHands(시침, 분침, 초침);

//시침
            DrawLine((int)(hourHand * Math.Sin(radHr)),
                -(int)(hourHand * Math.Cos(radHr)), 0, 0, //0,0축이 왼쪽 상단에 있기 때문에 뒤집어주기
                Brushes.RoyalBlue, 12, Center.X, Center.Y);

            //분침
            DrawLine((int)(minHand * Math.Sin(radMin)),
               -(int)(minHand * Math.Cos(radMin)), 0, 0, //0,0축이 왼쪽 상단에 있기 때문에 뒤집어주기
               Brushes.SkyBlue, 8, Center.X, Center.Y);

            //초침
            DrawLine((int)(secHand * Math.Sin(radSec)),
               -(int)(secHand * Math.Cos(radSec)), 0, 0, //0,0축이 왼쪽 상단에 있기 때문에 뒤집어주기
               Brushes.OrangeRed, 5, Center.X, Center.Y);

            //배꼽
            int coreSize = 16;
            Rectangle r= new Rectangle(Center.X - coreSize/2, Center.Y - coreSize/2, coreSize, coreSize);
            g.FillEllipse(Brushes.Gold, r);
            Pen p = new Pen(Brushes.DarkRed, 3);
            g.DrawEllipse(p, r);
            
            private void DrawLine(int x1, int y1, int x2, int y2, Brush color, int thick, int Cx, int Cy)
        {
            Pen pen = new Pen(color, thick);
            //선의 시작과 끝을 둥글게
            pen.StartCap = System.Drawing.Drawing2D.LineCap.Round; 
            pen.EndCap = System.Drawing.Drawing2D.LineCap.Round;

            g.DrawLine(pen, x1+Cx, y1+Cy, x2+Cx, y2 + Cy);
        }
profile
Recording...

0개의 댓글