/// <summary> /// Initializes a new instance of the DayRenderEventArgs class with default settings /// </summary> public NuGenDayQueryInfoEventArgs(NuGenDateItem info, DateTime date, NuGenDayState state) { this.m_info = info; this.m_date = date; this.m_state = state; }
internal void Draw(Graphics e) { int today = -1; string[] selectedDays; Brush bgBrush = new SolidBrush(Colors.BackColor1); Brush selBrush = new SolidBrush(Color.FromArgb(125, Colors.Selected.BackColor)); Brush focusBrush = new SolidBrush(Color.FromArgb(125, Colors.Focus.BackColor)); Pen todayPen = new Pen(Color.FromArgb(150, Calendar.TodayColor), 2); try { if (BackgroundImage != null) e.DrawImage(BackgroundImage, Rect); else { if (Colors.GradientMode != NuGenGradientMode.None) m_calendar.DrawGradient(e, m_rect, Colors.BackColor1, Colors.BackColor2, Colors.GradientMode); else e.FillRectangle(bgBrush, m_rect); } // Draw days for (int i = 0; i < 42; i++) { // only draw days that are visible... if ((m_days[i].Rectangle.Height > 0) && (m_days[i].Rectangle.Width > 0)) { // Create new graphics object Graphics d = m_calendar.CreateGraphics(); // Create bitmap.. Bitmap bmp = new Bitmap(m_days[i].Rectangle.Width, m_days[i].Rectangle.Height, d); // link graphics object to bitmap d = Graphics.FromImage(bmp); NuGenDayRenderEventArgs args = new NuGenDayRenderEventArgs(d, m_days[i].Rectangle, m_days[i].Date, m_days[i].State); DayRender(this, args); if (!args.OwnerDraw) { // day is not user drawn m_days[i].UserDrawn = false; NuGenDateItem dayInfo = new NuGenDateItem(); dayInfo.Calendar = m_calendar; NuGenDayQueryInfoEventArgs info = new NuGenDayQueryInfoEventArgs(dayInfo, m_days[i].Date, m_days[i].State); DayQueryInfo(this, info); if (!info.OwnerDraw) dayInfo = null; m_days[i].Draw(e, dayInfo); if (dayInfo != null) dayInfo.Dispose(); } else { // Draw user rendered day m_days[i].UserDrawn = true; e.DrawImage(bmp, m_days[i].Rectangle); } // Check if day has focus and if focus should be drawn if ((m_days[i].State == NuGenDayState.Focus) && (m_calendar.ShowFocus)) { e.FillRectangle(focusBrush, m_days[i].Rectangle); ControlPaint.DrawBorder(e, m_days[i].Rectangle, Colors.Focus.Border, BorderStyles.Focus); } if ((m_days[i].Date == DateTime.Today) && (!args.OwnerDraw)) today = i; d.Dispose(); bmp.Dispose(); } } // check if date is "today" and if it should be marked.. if ((m_calendar.ShowToday) && (today != -1) && ((m_calendar.ShowTrailingDates) || (m_days[today].Date.Month == m_calendar.ActiveMonth.Month))) { RectangleF dateRect = m_days[today].DateRegion[0].GetBounds(e); dateRect.Inflate(5, 5); e.DrawEllipse(todayPen, dateRect); } // Check if a selection exist selectedDays = DaysInSelection(NO_AREA); if (selectedDays.Length > 0) { // Check how many selection areas there are if (m_selArea.Count <= 1) { for (int i = 0; i < m_selArea.Count; i++) { NuGenCalendarSelectionArea area = (NuGenCalendarSelectionArea)m_selArea[i]; if ((area.Begin != -1) && (area.End != -1)) { // Get Coordinates for selection rectangle m_selRight = System.Math.Max(m_days[area.End].Rectangle.Right, m_days[area.Begin].Rectangle.Right); m_selLeft = System.Math.Min(m_days[area.End].Rectangle.Left, m_days[area.Begin].Rectangle.Left); m_selTop = System.Math.Min(m_days[area.End].Rectangle.Top, m_days[area.Begin].Rectangle.Top); m_selBottom = System.Math.Max(m_days[area.End].Rectangle.Bottom, m_days[area.Begin].Rectangle.Bottom); // Draw selection Rectangle selRect = new Rectangle(m_selLeft, m_selTop, m_selRight - m_selLeft, m_selBottom - m_selTop); e.FillRectangle(selBrush, selRect); ControlPaint.DrawBorder(e, selRect, Colors.Selected.Border, BorderStyles.Selected); } } } // Multiple selection areas, we dont use border so we // draw each day individually to not overlap regions else { for (int i = 0; i < 42; i++) { if ((m_days[i].State == NuGenDayState.Selected) && (m_days[i].SelectionArea != -1)) { e.FillRectangle(selBrush, m_days[i].Rectangle); } } } } } catch (Exception) { } bgBrush.Dispose(); selBrush.Dispose(); todayPen.Dispose(); focusBrush.Dispose(); }
internal void Draw(Graphics e, NuGenDateItem queryInfo) { StringFormat dateAlign = new StringFormat(); StringFormat textAlign = new StringFormat(); Font boldFont = new Font(m_month.DateFont.Name, m_month.DateFont.Size, m_month.DateFont.Style | FontStyle.Bold); Color bgColor1 = m_month.Colors.Days.BackColor1; Color bgColor2 = m_month.Colors.Days.BackColor2; NuGenGradientMode gradientMode = m_month.Colors.Days.GradientMode; Color textColor = m_month.Colors.Days.Text; Color dateColor = m_month.Colors.Days.Date; Brush dateBrush = new SolidBrush(dateColor); Brush textBrush = new SolidBrush(textColor); Brush bgBrush = new SolidBrush(bgColor1); string dateString; m_imageRect = new Rectangle(); string text = ""; bool drawDay = false; bool enabled = true; Image bgImage = null; int i = -1; bool boldedDate = false; NuGenDateItem[] info; m_dayImage = null; dateAlign = NuGenControlPaint.ContentAlignmentToStringFormat(m_month.DateAlign); textAlign = NuGenControlPaint.ContentAlignmentToStringFormat(m_month.TextAlign); if ((m_month.SelectedMonth.Month == m_date.Month) || (m_month.Calendar.ShowTrailingDates)) drawDay = true; if (((m_date.DayOfWeek == DayOfWeek.Saturday) && (m_month.Colors.Weekend.Saturday)) || ((m_date.DayOfWeek == DayOfWeek.Sunday) && (m_month.Colors.Weekend.Sunday))) { bgColor1 = m_month.Colors.Weekend.BackColor1; bgColor2 = m_month.Colors.Weekend.BackColor2; dateColor = m_month.Colors.Weekend.Date; textColor = m_month.Colors.Weekend.Text; gradientMode = m_month.Colors.Weekend.GradientMode; } if (m_month.SelectedMonth.Month != m_date.Month) { bgColor1 = m_month.Colors.Trailing.BackColor1; bgColor2 = m_month.Colors.Trailing.BackColor2; gradientMode = m_month.Colors.Trailing.GradientMode; dateColor = m_month.Colors.Trailing.Date; textColor = m_month.Colors.Trailing.Text; } // Check if formatting should be applied if ((m_month.FormatTrailing) || (m_month.SelectedMonth.Month == m_date.Month)) { // check of there is formatting for this day if (queryInfo != null) { info = new NuGenDateItem[1]; info[0] = queryInfo; } else info = m_calendar.GetDateInfo(this.Date); if (info.Length > 0) i = 0; // go through the available dateitems while ((i < info.Length) && (drawDay)) { if (info.Length > 0) { NuGenDateItem dateInfo = info[i]; if (dateInfo.BackColor1 != Color.Empty) bgColor1 = dateInfo.BackColor1; if (dateInfo.BackColor2 != Color.Empty) bgColor2 = dateInfo.BackColor2; gradientMode = dateInfo.GradientMode; if (dateInfo.DateColor != Color.Empty) dateColor = dateInfo.DateColor; if (dateInfo.TextColor != Color.Empty) textColor = dateInfo.TextColor; text = dateInfo.Text; if (dateInfo.Weekend) { bgColor1 = m_month.Colors.Weekend.BackColor1; bgColor2 = m_month.Colors.Weekend.BackColor2; gradientMode = m_month.Colors.Weekend.GradientMode; dateColor = m_month.Colors.Weekend.Date; textColor = m_month.Colors.Weekend.Text; } boldedDate = dateInfo.BoldedDate; enabled = dateInfo.Enabled; if (!dateInfo.Enabled) { bgColor1 = m_month.Colors.Disabled.BackColor1; bgColor2 = m_month.Colors.Disabled.BackColor2; gradientMode = m_month.Colors.Disabled.GradientMode; dateColor = m_month.Colors.Disabled.Date; textColor = m_month.Colors.Disabled.Text; } m_dayImage = dateInfo.Image; if (m_dayImage != null) m_imageRect = ImageRect(m_month.ImageAlign); bgImage = dateInfo.BackgroundImage; } if (m_state == NuGenDayState.Selected) { dateColor = m_month.Colors.Selected.Date; textColor = m_month.Colors.Selected.Text; } if ((m_state == NuGenDayState.Focus) && (m_month.Calendar.ShowFocus)) { dateColor = m_month.Colors.Focus.Date; textColor = m_month.Colors.Focus.Text; } if (bgImage != null) e.DrawImage(bgImage, m_rect); else { if (gradientMode == NuGenGradientMode.None) { if (bgColor1 != Color.Transparent) { bgBrush = new SolidBrush(Color.FromArgb(m_month.Transparency.Background, bgColor1)); e.FillRectangle(bgBrush, m_rect); } } else m_calendar.DrawGradient(e, Rectangle, bgColor1, bgColor2, gradientMode); } ControlPaint.DrawBorder(e, m_rect, m_month.Colors.Days.Border, m_month.BorderStyles.Normal); if (m_dayImage != null) { if (enabled) e.DrawImageUnscaled(m_dayImage, m_imageRect); else ControlPaint.DrawImageDisabled(e, m_dayImage, m_imageRect.X, m_imageRect.Y, m_month.Colors.Disabled.BackColor1); } // Check if we should append month name to date if ((m_month.ShowMonthInDay) && ((m_date.AddDays(-1).Month != m_date.Month) || (m_date.AddDays(1).Month != m_date.Month))) dateString = m_date.Day.ToString() + " " + m_calendar._dateTimeFormat.GetMonthName(m_date.Month); else dateString = m_date.Day.ToString(); if (dateColor != Color.Transparent) { dateBrush = new SolidBrush(Color.FromArgb(m_month.Transparency.Text, dateColor)); CharacterRange[] characterRanges = { new CharacterRange(0, dateString.Length) }; dateAlign.SetMeasurableCharacterRanges(characterRanges); m_dateRgn = new Region[1]; // Should date be bolded ? if (!boldedDate) { e.DrawString(dateString, m_month.DateFont, dateBrush, m_rect, dateAlign); m_dateRgn = e.MeasureCharacterRanges(dateString, m_month.DateFont, m_rect, dateAlign); } else { e.DrawString(dateString, boldFont, dateBrush, m_rect, dateAlign); m_dateRgn = e.MeasureCharacterRanges(dateString, boldFont, m_rect, dateAlign); } } if ((text.Length > 0) && (textColor != Color.Transparent)) { textBrush = new SolidBrush(Color.FromArgb(m_month.Transparency.Text, textColor)); CharacterRange[] characterRanges = { new CharacterRange(0, text.Length) }; textAlign.SetMeasurableCharacterRanges(characterRanges); m_textRgn = new Region[1]; e.DrawString(text, m_month.TextFont, textBrush, m_rect, textAlign); m_textRgn = e.MeasureCharacterRanges(text, m_month.TextFont, m_rect, textAlign); } i++; } } dateBrush.Dispose(); bgBrush.Dispose(); textBrush.Dispose(); boldFont.Dispose(); dateAlign.Dispose(); textAlign.Dispose(); }
internal void Draw(Graphics e, NuGenDateItem queryInfo) { StringFormat dateAlign = new StringFormat(); StringFormat textAlign = new StringFormat(); Font boldFont = new Font(m_month.DateFont.Name, m_month.DateFont.Size, m_month.DateFont.Style | FontStyle.Bold); Color bgColor1 = m_month.Colors.Days.BackColor1; Color bgColor2 = m_month.Colors.Days.BackColor2; NuGenGradientMode gradientMode = m_month.Colors.Days.GradientMode; Color textColor = m_month.Colors.Days.Text; Color dateColor = m_month.Colors.Days.Date; Brush dateBrush = new SolidBrush(dateColor); Brush textBrush = new SolidBrush(textColor); Brush bgBrush = new SolidBrush(bgColor1); string dateString; m_imageRect = new Rectangle(); string text = ""; bool drawDay = false; bool enabled = true; Image bgImage = null; int i = -1; bool boldedDate = false; NuGenDateItem[] info; m_dayImage = null; dateAlign = NuGenControlPaint.ContentAlignmentToStringFormat(m_month.DateAlign); textAlign = NuGenControlPaint.ContentAlignmentToStringFormat(m_month.TextAlign); if ((m_month.SelectedMonth.Month == m_date.Month) || (m_month.Calendar.ShowTrailingDates)) { drawDay = true; } if (((m_date.DayOfWeek == DayOfWeek.Saturday) && (m_month.Colors.Weekend.Saturday)) || ((m_date.DayOfWeek == DayOfWeek.Sunday) && (m_month.Colors.Weekend.Sunday))) { bgColor1 = m_month.Colors.Weekend.BackColor1; bgColor2 = m_month.Colors.Weekend.BackColor2; dateColor = m_month.Colors.Weekend.Date; textColor = m_month.Colors.Weekend.Text; gradientMode = m_month.Colors.Weekend.GradientMode; } if (m_month.SelectedMonth.Month != m_date.Month) { bgColor1 = m_month.Colors.Trailing.BackColor1; bgColor2 = m_month.Colors.Trailing.BackColor2; gradientMode = m_month.Colors.Trailing.GradientMode; dateColor = m_month.Colors.Trailing.Date; textColor = m_month.Colors.Trailing.Text; } // Check if formatting should be applied if ((m_month.FormatTrailing) || (m_month.SelectedMonth.Month == m_date.Month)) { // check of there is formatting for this day if (queryInfo != null) { info = new NuGenDateItem[1]; info[0] = queryInfo; } else { info = m_calendar.GetDateInfo(this.Date); } if (info.Length > 0) { i = 0; } // go through the available dateitems while ((i < info.Length) && (drawDay)) { if (info.Length > 0) { NuGenDateItem dateInfo = info[i]; if (dateInfo.BackColor1 != Color.Empty) { bgColor1 = dateInfo.BackColor1; } if (dateInfo.BackColor2 != Color.Empty) { bgColor2 = dateInfo.BackColor2; } gradientMode = dateInfo.GradientMode; if (dateInfo.DateColor != Color.Empty) { dateColor = dateInfo.DateColor; } if (dateInfo.TextColor != Color.Empty) { textColor = dateInfo.TextColor; } text = dateInfo.Text; if (dateInfo.Weekend) { bgColor1 = m_month.Colors.Weekend.BackColor1; bgColor2 = m_month.Colors.Weekend.BackColor2; gradientMode = m_month.Colors.Weekend.GradientMode; dateColor = m_month.Colors.Weekend.Date; textColor = m_month.Colors.Weekend.Text; } boldedDate = dateInfo.BoldedDate; enabled = dateInfo.Enabled; if (!dateInfo.Enabled) { bgColor1 = m_month.Colors.Disabled.BackColor1; bgColor2 = m_month.Colors.Disabled.BackColor2; gradientMode = m_month.Colors.Disabled.GradientMode; dateColor = m_month.Colors.Disabled.Date; textColor = m_month.Colors.Disabled.Text; } m_dayImage = dateInfo.Image; if (m_dayImage != null) { m_imageRect = ImageRect(m_month.ImageAlign); } bgImage = dateInfo.BackgroundImage; } if (m_state == NuGenDayState.Selected) { dateColor = m_month.Colors.Selected.Date; textColor = m_month.Colors.Selected.Text; } if ((m_state == NuGenDayState.Focus) && (m_month.Calendar.ShowFocus)) { dateColor = m_month.Colors.Focus.Date; textColor = m_month.Colors.Focus.Text; } if (bgImage != null) { e.DrawImage(bgImage, m_rect); } else { if (gradientMode == NuGenGradientMode.None) { if (bgColor1 != Color.Transparent) { bgBrush = new SolidBrush(Color.FromArgb(m_month.Transparency.Background, bgColor1)); e.FillRectangle(bgBrush, m_rect); } } else { m_calendar.DrawGradient(e, Rectangle, bgColor1, bgColor2, gradientMode); } } ControlPaint.DrawBorder(e, m_rect, m_month.Colors.Days.Border, m_month.BorderStyles.Normal); if (m_dayImage != null) { if (enabled) { e.DrawImageUnscaled(m_dayImage, m_imageRect); } else { ControlPaint.DrawImageDisabled(e, m_dayImage, m_imageRect.X, m_imageRect.Y, m_month.Colors.Disabled.BackColor1); } } // Check if we should append month name to date if ((m_month.ShowMonthInDay) && ((m_date.AddDays(-1).Month != m_date.Month) || (m_date.AddDays(1).Month != m_date.Month))) { dateString = m_date.Day.ToString() + " " + m_calendar._dateTimeFormat.GetMonthName(m_date.Month); } else { dateString = m_date.Day.ToString(); } if (dateColor != Color.Transparent) { dateBrush = new SolidBrush(Color.FromArgb(m_month.Transparency.Text, dateColor)); CharacterRange[] characterRanges = { new CharacterRange(0, dateString.Length) }; dateAlign.SetMeasurableCharacterRanges(characterRanges); m_dateRgn = new Region[1]; // Should date be bolded ? if (!boldedDate) { e.DrawString(dateString, m_month.DateFont, dateBrush, m_rect, dateAlign); m_dateRgn = e.MeasureCharacterRanges(dateString, m_month.DateFont, m_rect, dateAlign); } else { e.DrawString(dateString, boldFont, dateBrush, m_rect, dateAlign); m_dateRgn = e.MeasureCharacterRanges(dateString, boldFont, m_rect, dateAlign); } } if ((text.Length > 0) && (textColor != Color.Transparent)) { textBrush = new SolidBrush(Color.FromArgb(m_month.Transparency.Text, textColor)); CharacterRange[] characterRanges = { new CharacterRange(0, text.Length) }; textAlign.SetMeasurableCharacterRanges(characterRanges); m_textRgn = new Region[1]; e.DrawString(text, m_month.TextFont, textBrush, m_rect, textAlign); m_textRgn = e.MeasureCharacterRanges(text, m_month.TextFont, m_rect, textAlign); } i++; } } dateBrush.Dispose(); bgBrush.Dispose(); textBrush.Dispose(); boldFont.Dispose(); dateAlign.Dispose(); textAlign.Dispose(); }