MESCIUS PlusPak for Windows Forms 12.0J
カレンダーの手動描画

GcCalendar コントロールでは、カレンダーの日付および月領域に独自の文字列や画像などを使用して描画する方法を提供しています。


概要
DrawModeプロパティを使用してカレンダーを描画する方法を設定できます。デフォルトでは、Normalです。


DrawModeの値 説明
Normal GcCalendar コントロールの日付および月領域はシステムによって描画されます。
OwnerDrawDay CalendarTypeがMonthDayの場合、DrawDayイベントを使用して日付領域を描画できます。
OwnerDrawMonth CalendarTypeがYearMonthの場合、DrawMonthイベントを使用して日付領域を描画できます。
OwnerDrawDayAndMonth DrawDayイベントとDrawMonthイベントを使用して日付および月領域を描画できます。
GcCalendar コントロールのDrawModeプロパティがOwnerDrawDayまたはOwnerDrawDayAndMonthの場合、日付領域が変わるときにDrawDayイベントが発生します。イベントハンドラのパラメーターとして渡されたDrawDayEventArgsクラスのプロパティとメソッドを使用して日付部分を描画できます。DrawModeプロパティがOwnerDrawMonthまたはOwnerDrawDayAndMonthの場合、月領域が変わるときにDrawMonthイベントが発生します。DrawMonthEventArgsクラスのプロパティとメソッドを使用して月部分を描画します。使用できるプロパティとメソッド、および使用方法に関する詳細については、DrawDayイベントとDrawMonthイベントの解説と使用例をご参照ください。
サンプルコード
次のサンプルコードは、特定の日付領域に任意のテキストと画像を使用して描画する方法を示します。
Imports GrapeCity.Win.Calendar

GcCalendar1.DrawMode = CalendarDrawMode.OwnerDrawDay

GcCalendar1.Lines.Vertical = New Line(LineStyle.Hair, Color.Gray)
GcCalendar1.Lines.Horizontal = New Line(LineStyle.Single, Color.Gray)

If e.Month = 6 And e.Day = 4 Then
    Dim myBrush As Brush = Brushes.Red
    e.DrawBackground()
    Dim format As New StringFormat()
    format.Alignment = StringAlignment.Far
    format.LineAlignment = StringAlignment.Center
    e.Graphics.DrawString("休", GcCalendar1.Font, myBrush, e.Bounds, format)
    e.Graphics.DrawImage(New Bitmap("D:\icon.png"), New Point(e.Bounds.X, e.Bounds.Y))
Else
    e.DrawBackground()
    e.DrawTodayImageAndFocusRectangle()
    e.DrawForeground()
End If
using GrapeCity.Win.Calendar;

gcCalendar1.Lines.Vertical = New Line(LineStyle.Hair, Color.Gray);
gcCalendar1.Lines.Horizontal = New Line(LineStyle.Single, Color.Gray);

private void gcCalendar1_DrawDay(object sender, DrawDayEventArgs e)
{
    if (e.Month == 6 && e.Day == 4)
    {
        Brush myBrush = Brushes.Red;
        e.DrawBackground();
        StringFormat format = new StringFormat();
        format.Alignment = StringAlignment.Far;
        format.LineAlignment = StringAlignment.Center;
        e.Graphics.DrawString("休", gcCalendar1.Font, myBrush, e.Bounds, format);
        e.Graphics.DrawImage(new Bitmap("D:\icon.png"), new Point(e.Bounds.X, e.Bounds.Y));
    }
    else
    {
        e.DrawBackground();
        e.DrawTodayImageAndFocusRectangle();
        e.DrawForeground();
    }
}
   
関連トピック

 

 


© MESCIUS inc. All rights reserved.