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); } } } } }
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); } }
/// <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++; } } }