Ejemplo n.º 1
0
 private void DateHoliday(Graphics g, DateTime dt, Brush brush, int dhX, int dhY)
 {
     if (dt < new DateTime(1900, 1, 30) || dt > new DateTime(2049, 12, 31))//超出农历转化情况
     {
         ModuleClass.Calendar CCD = new ModuleClass.Calendar(dt, false);
         if (CCD.DateHoliday != "")//是否有公历节日
         {
             Font   f   = new Font("", 10);
             string str = CCD.DateHoliday;
             HolidaySize(g, str, 10, brush, dhX, dhY);
         }
         else
         {
             if (CCD.WeekDayHoliday != "")//是否有以周计算的节日
             {
                 Font   f   = new Font("", 10);
                 string str = CCD.WeekDayHoliday;
                 HolidaySize(g, str, 10, brush, dhX, dhY);
             }
         }
     }
     else
     {
         //农历
         ModuleClass.Calendar CCD = new ModuleClass.Calendar(dt);
         if (CCD.ChineseCalendarHoliday != "")                                            //是否有农历节日
         {
             g.DrawString(CCD.ChineseCalendarHoliday, new Font("", 10), brush, dhX, dhY); //28 + 60 * i * size, 125 + 60 * j * size
         }
         else
         {
             if (CCD.DateHoliday != "")//是否有公历节日
             {
                 Font   f   = new Font("", 10);
                 string str = CCD.DateHoliday;
                 HolidaySize(g, str, 10, brush, dhX, dhY);
             }
             else
             {
                 if (CCD.WeekDayHoliday != "")//是否有以周计算的节日
                 {
                     Font   f   = new Font("", 10);
                     string str = CCD.WeekDayHoliday;
                     HolidaySize(g, str, 10, brush, dhX, dhY);
                 }
                 else//没有节日就显示农历
                 {
                     if (CCD.ChineseDayString == "初一")
                     {
                         g.DrawString(CCD.ChineseMonthString, new Font("", 10), brush, dhX, dhY);
                         return;
                     }
                     g.DrawString(CCD.ChineseDayString, new Font("", 10), brush, dhX, dhY);
                 }
             }
         }
     }
 }
Ejemplo n.º 2
0
        private void splitC_Panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            ModuleClass.Calendar CCD = new ModuleClass.Calendar(selectDay, false);

            string dateStr        = CCD.DateString;     //公历日期中文表示法 如一九九七年七月一日
            string WeekDayStr     = CCD.WeekDayStr;     //星期几
            string DateHoliday    = CCD.DateHoliday;    //公历节日
            string WeekDayHoliday = CCD.WeekDayHoliday; //星期节日


            g.DrawString(dateStr, new Font("微软雅黑", 12), new SolidBrush(Color.Black), 60, 20);                      //公历日期
            g.FillRectangle(new SolidBrush(Color.Green), 60, 50, 180, 180);                                        //底框
            if (selectDay.Day < 10)                                                                                //一位数日历
            {
                g.DrawString(selectDay.Day.ToString(), new Font("微软雅黑", 72), new SolidBrush(Color.Black), 90, 55); //日历天数
            }
            else//两位数日历
            {
                g.DrawString(selectDay.Day.ToString(), new Font("微软雅黑", 72), new SolidBrush(Color.Black), 60, 55); //日历天数
            }
            if (DateHoliday != "")                                                                                 //有公历节日
            {
                g.DrawString(DateHoliday, new Font("微软雅黑", 20), new SolidBrush(Color.Red), 80, 175);               //公历节日
            }



            if (WeekDayHoliday != "")                                                                                            //有星期节日
            {
                g.DrawString(WeekDayStr + "(" + WeekDayHoliday + ")", new Font("微软雅黑", 20), new SolidBrush(Color.Red), 45, 270); //星期
            }
            else
            {
                g.DrawString(WeekDayStr, new Font("微软雅黑", 20), new SolidBrush(Color.Black), 80, 270);//星期
            }
            if (selectDay >= new DateTime(1990, 1, 30) && selectDay <= new DateTime(2049, 12, 31))
            {
                ModuleClass.Calendar CCD2     = new ModuleClass.Calendar(selectDay);
                string ChineseMonthString     = CCD2.ChineseMonthString;     //农历月份
                string ChineseDayString       = CCD2.ChineseDayString;       //农历日期
                string ChineseCalendarHoliday = CCD2.ChineseCalendarHoliday; //农历节日
                string GanZhiAnimalYearString = CCD2.GanZhiAnimalYearString; //取农历年的干支表示法如 乙丑年
                string GanZhiMonthString      = CCD2.GanZhiMonthString;
                string GanZhiDayString        = CCD2.GanZhiDayString;
                // string AnimalString = CCD.AnimalString;//属相 如猴
                if (ChineseCalendarHoliday != "")//有农历节日
                {
                    g.DrawString(ChineseMonthString + ChineseDayString + "(" + ChineseCalendarHoliday + ")", new Font("微软雅黑", 20), new SolidBrush(Color.Red), 50, 230);
                }
                else
                {
                    g.DrawString(ChineseMonthString + ChineseDayString, new Font("微软雅黑", 20), new SolidBrush(Color.Black), 80, 230);
                }
                g.DrawString(GanZhiAnimalYearString, new Font("微软雅黑", 20), new SolidBrush(Color.Black), 60, 310);
                g.DrawString(GanZhiMonthString, new Font("微软雅黑", 18), new SolidBrush(Color.Black), 60, 350);
                g.DrawString(GanZhiDayString, new Font("微软雅黑", 18), new SolidBrush(Color.Black), 160, 350);

                g.DrawString("当前用户:" + Login_Name, new Font("微软雅黑", 14), new SolidBrush(Color.Black), 60, 550);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 绘制日期数字区域
        /// </summary>
        /// <param name="datetime"></param>
        private void DrawDateNum(DateTime datetime)
        {
            ModuleClass.Calendar CalendarDate = new ModuleClass.Calendar();
            DateTime             dtNow        = DateTime.Parse(DateTime.Now.ToShortDateString());
            int firstDayofWeek = CalendarDate.GetWeekOfFirstDay(selectYear, selectMonth);
            int endMonthDay    = CalendarDate.GetMonthDays(selectYear, selectMonth);

            var      fontNum            = new Font("", 16);
            var      fontHoliday        = new Font("", 10);
            var      solidBrushWeekdays = new SolidBrush(Color.Gray);
            var      solidBrushWeekend  = new SolidBrush(Color.Chocolate);
            var      solidBrushHoliday  = new SolidBrush(Color.BurlyWood);
            Graphics g   = splitC.Panel2.CreateGraphics();
            int      num = 1;

            for (int j = 0; j < 6; j++)
            {
                for (int i = 0; i < 7; i++)
                {
                    #region 处理空白日期为空
                    if (j == 0 && i < firstDayofWeek) //定义当月第一天的星期的位置
                    {
                        continue;
                    }
                    if (num > endMonthDay) //定义当月最后一天的位置
                    {
                        break;
                    }
                    #endregion

                    DateTime dt = DateTime.Parse(datetime.Year + "-" + datetime.Month + "-" + num);
                    TimeSpan ts = dt - dtNow;
                    dateArray[i, j] = dt;
                    if (ts.Days == 0)//今日绘制椭圆标识
                    {
                        g.DrawEllipse(new Pen(Color.Chocolate, 3), (15 + 60 * i * size), (92 + 60 * j * size), 50, 35);
                    }

                    string rqNum = num.ToString(CultureInfo.InvariantCulture);
                    int    Nx    = 28 + 60 * i * size;//日期数字x坐标
                    int    Ny    = 95 + 60 * j * size;

                    int Hx = 20 + 60 * i * size;//农历、假日x坐标
                    int Hy = 125 + 60 * j * size;
                    if (num > 9)
                    {
                        Nx = Nx - 8;
                    }
                    if (i == 0 || i == 6)                                        //周末日期
                    {
                        g.DrawString(rqNum, fontNum, solidBrushWeekend, Nx, Ny); //绘制日期
                        DateHoliday(g, dt, solidBrushWeekend, Hx, Hy);           //绘制农历、节假日
                    }
                    else
                    {
                        g.DrawString(rqNum, fontNum, solidBrushWeekdays, Nx, Ny);
                        DateHoliday(g, dt, solidBrushWeekdays, Hx, Hy);
                    }
                    num++;
                }
            }
        }