첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ PivotGridControl 클래스 : CustomDrawCell 이벤트를 사용해 셀 커스텀 그리기

------------------------------------------------------------------------------------------------------------------------


TestProject.zip


MainForm.cs

 

 

using System.Data.OleDb;

using System.Drawing;

using System.Drawing.Drawing2D;

 

using DevExpress.Data.PivotGrid;

using DevExpress.XtraEditors;

using DevExpress.XtraPivotGrid;

 

namespace TestProject

{

    /// <summary>

    /// 메인 폼

    /// </summary>

    public partial class MainForm : XtraForm

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Field

        ////////////////////////////////////////////////////////////////////////////////////////// Private

 

        #region Field

 

        /// <summary>

        /// 연결

        /// </summary>

        private OleDbConnection connection;

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - MainForm()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public MainForm()

        {

            InitializeComponent();

 

            this.connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=nwind.mdb");

 

            this.pivotGridControl.OptionsView.RowTotalsLocation = PivotRowTotalsLocation.Tree;

 

            this.pivotGridControl.DataSource = Order.GetOrderList(this.connection);

 

            this.pivotGridControl.RetrieveFields();

 

            PivotGridField orderIDField     = this.pivotGridControl.Fields["OrderID"    ];

            PivotGridField orderDateField   = this.pivotGridControl.Fields["OrderDate"  ];

            PivotGridField shipCountryField = this.pivotGridControl.Fields["ShipCountry"];

            PivotGridField shipCityField    = this.pivotGridControl.Fields["ShipCity"   ];

 

            shipCountryField.Area = PivotArea.RowArea;

 

            shipCityField.Area = PivotArea.RowArea;

 

            orderDateField.Area          = PivotArea.ColumnArea;

            orderDateField.GroupInterval = PivotGroupInterval.DateMonthYear;

 

            orderIDField.Area        = PivotArea.DataArea;

            orderIDField.SummaryType = PivotSummaryType.Count;

 

            this.pivotGridControl.CustomDrawCell += pivotGridControl_CustomDrawCell;

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Private

 

        #region 피벗 그리드 컨트롤 셀 커스텀 그리기 - pivotGridControl_CustomDrawCell(sender, e)

 

        /// <summary>

        /// 피벗 그리드 컨트롤 셀 커스텀 그리기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void pivotGridControl_CustomDrawCell(object sender, PivotCustomDrawCellEventArgs e)

        {

            Rectangle rectangle;

 

            if(e.RowValueType == PivotGridValueType.GrandTotal)

            {

                e.GraphicsCache.FillRectangle

                (

                    new LinearGradientBrush

                    (

                        e.Bounds,

                        Color.LightBlue,

                        Color.Blue,

                        LinearGradientMode.Vertical

                    ),

                    e.Bounds

                );

 

                rectangle = Rectangle.Inflate(e.Bounds, -3, -3);

 

                e.GraphicsCache.FillRectangle

                (

                    new LinearGradientBrush

                    (

                        e.Bounds,

                        Color.Blue,

                        Color.LightSkyBlue,

                        LinearGradientMode.Vertical

                    ),

                    rectangle

                );

 

                e.GraphicsCache.DrawString

                (

                    e.DisplayText,

                    e.Appearance.Font,

                    new SolidBrush(Color.White),

                    rectangle,

                    e.Appearance.GetStringFormat()

                );

 

                e.Handled = true;

 

                return;

            }

 

            Brush backgroundBrush;

 

            rectangle = e.Bounds;

 

            if(e.Focused)

            {

                backgroundBrush = e.GraphicsCache.GetSolidBrush(Color.Pink);

            }

            else

            {

                if(e.Selected)

                {

                    backgroundBrush = e.GraphicsCache.GetSolidBrush(Color.PaleGreen);

                }

                else

                {

                    backgroundBrush = e.GraphicsCache.GetSolidBrush(Color.LemonChiffon);

                }

            }

 

            e.GraphicsCache.DrawRectangle(new Pen(new SolidBrush(Color.DimGray), 1), rectangle);

 

            rectangle.Inflate(-1, -1);

 

            e.GraphicsCache.FillRectangle(backgroundBrush, rectangle);

 

            e.Appearance.DrawString(e.GraphicsCache, e.DisplayText, rectangle);

 

            e.Handled = true;

        }

 

        #endregion

    }

}

 

------------------------------------------------------------------------------------------------------------------------

'DevExpress > WinForm' 카테고리의 다른 글

[DEVEXPRESS/WINFORM] PivotGridControl 클래스 : CustomCellValue 이벤트를 사용해 커스텀 SUMMARY 타입을 갖는 다수 커스텀 총계 계산하기  (0) 2020.05.09
[DEVEXPRESS/WINFORM] PivotGridControl 클래스 : LINQ to SQL 서버 모드 사용하기  (0) 2020.05.09
[DEVEXPRESS/WINFORM] PivotGridControl 클래스 : CustomUnboundFieldData 이벤트를 사용해 그룹 간격 커스텀 설정하기  (0) 2020.05.09
[DEVEXPRESS/WINFORM] PivotGridField 클래스 : 엑셀 데이터 소스 바인딩하기  (0) 2020.05.09
[DEVEXPRESS/WINFORM] PivotGridCells 클래스 : CopySelectionToClipboard 메소드를 사용해 데이터를 클립보드에 복사하기  (0) 2020.05.09
[DEVEXPRESS/WINFORM] PivotGridControl 클래스 : CustomDrawCell 이벤트를 사용해 셀 커스텀 그리기  (0) 2020.05.08
[DEVEXPRESS/WINFORM] PivotGridControl 클래스 : ExportToXlsx 메소드를 사용해 엑셀 파일 내보내기  (0) 2020.05.08
[DEVEXPRESS/WINFORM] PivotGridControl 클래스 : ShowRibbonPrintPreview 메소드를 사용해 인쇄 미리보기 대화 상자 표시하기  (0) 2020.05.08
[DEVEXPRESS/WINFORM] PivotGridCells 클래스 : MultiSelection 속성을 사용해 데이터 셀 선택하기  (0) 2020.05.08
[DEVEXPRESS/WINFORM] PivotGridField 클래스 : DisplayFolder 속성을 사용해 Customization 폼에서 사용자 폴더 생성하기  (0) 2020.05.08
[DEVEXPRESS/WINFORM] PivotGridControl 클래스 : Groups 속성을 사용해 필드 그룹 설정하기  (0) 2020.05.08
Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요