Beispiel #1
0
        /// <summary>
        /// Create default style for grid control.
        /// </summary>
        /// <returns>Default style created</returns>
        public static ControlAppearanceStyle CreateDefaultControlStyle()
        {
            return(new ControlAppearanceStyle
            {
                colors = new Dictionary <ControlAppearanceColors, SolidColor>
                {
                    { ControlAppearanceColors.LeadHeadNormal, SolidColor.Lavender },
                    { ControlAppearanceColors.LeadHeadSelected, SolidColor.Lavender },
                    { ControlAppearanceColors.LeadHeadIndicatorStart, SolidColor.Gainsboro },
                    { ControlAppearanceColors.LeadHeadIndicatorEnd, SolidColor.Silver },
                    { ControlAppearanceColors.ColHeadSplitter, SolidColor.LightSteelBlue },
                    { ControlAppearanceColors.ColHeadNormalStart, SolidColor.White },
                    { ControlAppearanceColors.ColHeadNormalEnd, SolidColor.Lavender },
                    { ControlAppearanceColors.ColHeadHoverStart, SolidColor.LightGoldenrodYellow },
                    { ControlAppearanceColors.ColHeadHoverEnd, SolidColor.Goldenrod },
                    { ControlAppearanceColors.ColHeadSelectedStart, SolidColor.LightGoldenrodYellow },
                    { ControlAppearanceColors.ColHeadSelectedEnd, SolidColor.Goldenrod },
                    { ControlAppearanceColors.ColHeadFullSelectedStart, SolidColor.WhiteSmoke },
                    { ControlAppearanceColors.ColHeadFullSelectedEnd, SolidColor.LemonChiffon },
                    { ControlAppearanceColors.ColHeadSelectedNotFocusedStart, SolidColor.LightGoldenrodYellow },
                    { ControlAppearanceColors.ColHeadSelectedNotFocusedEnd, SolidColor.Goldenrod },
                    { ControlAppearanceColors.ColHeadFullSelectedNotFocusedStart, SolidColor.WhiteSmoke },
                    { ControlAppearanceColors.ColHeadFullSelectedNotFocusedEnd, SolidColor.LemonChiffon },
                    { ControlAppearanceColors.ColHeadText, SolidColor.DarkBlue },
                    { ControlAppearanceColors.RowHeadSplitter, SolidColor.LightSteelBlue },
                    { ControlAppearanceColors.RowHeadNormal, SolidColor.AliceBlue },
                    { ControlAppearanceColors.RowHeadHover, SolidColor.LightSteelBlue },
                    { ControlAppearanceColors.RowHeadSelected, SolidColor.PaleGoldenrod },
                    { ControlAppearanceColors.RowHeadFullSelected, SolidColor.LemonChiffon },
                    { ControlAppearanceColors.RowHeadSelectedNotFocused, SolidColor.PaleGoldenrod },
                    { ControlAppearanceColors.RowHeadFullSelectedNotFocused, SolidColor.LemonChiffon },
                    { ControlAppearanceColors.RowHeadText, SolidColor.DarkBlue },
                    { ControlAppearanceColors.GridText, SolidColor.Black },
                    { ControlAppearanceColors.GridBackground, SolidColor.White },
                    { ControlAppearanceColors.GridLine, SolidColor.FromArgb(255, 208, 215, 229) },
                    { ControlAppearanceColors.SelectionBorder, ColorUtility.FromAlphaColor(180, StaticResources.SystemColor_Highlight) },
                    { ControlAppearanceColors.SelectionFill, ColorUtility.FromAlphaColor(50, StaticResources.SystemColor_Highlight) },
                    { ControlAppearanceColors.SelectionNotFocusedBorder, ColorUtility.FromAlphaColor(180, StaticResources.SystemColor_ControlDark) },
                    { ControlAppearanceColors.SelectionNotFocusedFill, ColorUtility.FromAlphaColor(50, StaticResources.SystemColor_ControlDark) },
                    { ControlAppearanceColors.OutlineButtonBorder, SolidColor.Black },
                    { ControlAppearanceColors.OutlinePanelBackground, StaticResources.SystemColor_Control },
                    { ControlAppearanceColors.OutlinePanelBorder, SolidColor.Silver },
                    { ControlAppearanceColors.OutlineButtonText, StaticResources.SystemColor_WindowText },
                    { ControlAppearanceColors.SheetTabText, StaticResources.SystemColor_WindowText },
                    { ControlAppearanceColors.SheetTabBorder, StaticResources.SystemColor_Highlight },
                    { ControlAppearanceColors.SheetTabBackground, SolidColor.White },
                    { ControlAppearanceColors.SheetTabSelected, StaticResources.SystemColor_Window },
                },

                SelectionBorderWidth = 3,
            });
        }
Beispiel #2
0
        /// <summary>
        /// Construct control appearance with two theme colors
        /// </summary>
        /// <param name="mainTheme">Main theme color</param>
        /// <param name="salientTheme">Salient theme color</param>
        /// <param name="useSystemHighlight">Whether use highlight colors of system default</param>
        public ControlAppearanceStyle(SolidColor mainTheme, SolidColor salientTheme, bool useSystemHighlight)
        {
            SolidColor lightMainTheme              = ColorUtility.LightColor(mainTheme);
            SolidColor lightLightMainTheme         = ColorUtility.LightLightColor(mainTheme);
            SolidColor lightLightLightMainTheme    = ColorUtility.LightLightLightColor(mainTheme);
            SolidColor darkMainTheme               = ColorUtility.DarkColor(mainTheme);
            SolidColor darkDarkMainTheme           = ColorUtility.DarkDarkColor(mainTheme);
            SolidColor lightSalientTheme           = ColorUtility.LightColor(salientTheme);
            SolidColor lightLightSalientTheme      = ColorUtility.LightLightColor(salientTheme);
            SolidColor lightLightLightSalientTheme = ColorUtility.LightLightLightColor(salientTheme);
            SolidColor darkSalientTheme            = ColorUtility.DarkColor(salientTheme);
            SolidColor darkDarkSalientTheme        = ColorUtility.DarkDarkColor(salientTheme);

            var backgroundColor = ColorUtility.ChangeColorBrightness(mainTheme, 0.5f);

            SolidColor leadHead = mainTheme;

            colors[ControlAppearanceColors.LeadHeadNormal]         = leadHead;
            colors[ControlAppearanceColors.LeadHeadSelected]       = darkMainTheme;
            colors[ControlAppearanceColors.LeadHeadIndicatorStart] = lightLightLightSalientTheme;
            colors[ControlAppearanceColors.LeadHeadIndicatorEnd]   = lightLightSalientTheme;

            colors[ControlAppearanceColors.ColHeadSplitter]          = mainTheme;
            colors[ControlAppearanceColors.ColHeadNormalStart]       = lightLightLightMainTheme;
            colors[ControlAppearanceColors.ColHeadNormalEnd]         = mainTheme;
            colors[ControlAppearanceColors.ColHeadSelectedStart]     = lightLightLightSalientTheme;
            colors[ControlAppearanceColors.ColHeadSelectedEnd]       = salientTheme;
            colors[ControlAppearanceColors.ColHeadFullSelectedStart] = lightLightLightSalientTheme;
            colors[ControlAppearanceColors.ColHeadFullSelectedEnd]   = lightLightSalientTheme;
            colors[ControlAppearanceColors.ColHeadText] = darkDarkMainTheme;

            colors[ControlAppearanceColors.RowHeadSplitter]     = mainTheme;
            colors[ControlAppearanceColors.RowHeadNormal]       = lightLightMainTheme;
            colors[ControlAppearanceColors.RowHeadHover]        = ColorUtility.DarkColor(leadHead);
            colors[ControlAppearanceColors.RowHeadSelected]     = lightSalientTheme;
            colors[ControlAppearanceColors.RowHeadFullSelected] = lightLightSalientTheme;
            colors[ControlAppearanceColors.RowHeadText]         = darkDarkMainTheme;

            if (useSystemHighlight)
            {
                colors[ControlAppearanceColors.SelectionFill]   = new SolidColor(30, StaticResources.SystemColor_Highlight);
                colors[ControlAppearanceColors.SelectionBorder] = new SolidColor(180, StaticResources.SystemColor_Highlight);
            }
            else
            {
                colors[ControlAppearanceColors.SelectionFill]   = ColorUtility.FromAlphaColor(30, darkSalientTheme);
                colors[ControlAppearanceColors.SelectionBorder] = ColorUtility.FromAlphaColor(180, lightSalientTheme);
            }

            colors[ControlAppearanceColors.GridBackground] = backgroundColor;
            colors[ControlAppearanceColors.GridLine]       = ColorUtility.ChangeColorBrightness(mainTheme, 0.4f);
            colors[ControlAppearanceColors.GridText]       = StaticResources.SystemColor_WindowText;

            colors[ControlAppearanceColors.OutlineButtonBorder]    = mainTheme;
            colors[ControlAppearanceColors.OutlinePanelBackground] = lightLightMainTheme;
            colors[ControlAppearanceColors.OutlinePanelBorder]     = mainTheme;
            colors[ControlAppearanceColors.OutlineButtonText]      = darkSalientTheme;

            colors[ControlAppearanceColors.SheetTabBackground] = lightLightMainTheme;
            colors[ControlAppearanceColors.SheetTabText]       = StaticResources.SystemColor_WindowText;
            colors[ControlAppearanceColors.SheetTabBorder]     = mainTheme;
            colors[ControlAppearanceColors.SheetTabSelected]   = backgroundColor;

            this.SelectionBorderWidth = 3;
        }
Beispiel #3
0
        public override void Draw(CellDrawingContext dc)
        {
            var sheet = this.ViewportController.Worksheet;

            if (sheet == null || sheet.controlAdapter == null)
            {
                return;
            }

            var g            = dc.Graphics;
            var controlStyle = sheet.workbook.controlAdapter.ControlStyle;

            switch (sheet.operationStatus)
            {
            case OperationStatus.AdjustColumnWidth:
                #region Draw Column Header Adjust Line
                if (sheet.currentColWidthChanging >= 0)
                {
                    ColumnHeader col = sheet.cols[sheet.currentColWidthChanging];

                    RGFloat left   = col.Left * this.scaleFactor;
                    RGFloat right  = Math.Max(left, PointToView(new Point(sheet.headerAdjustNewValue, 0)).X *this.scaleFactor);
                    RGFloat top    = ScrollViewTop * this.scaleFactor;
                    RGFloat bottom = ScrollViewTop * this.scaleFactor + this.Height;

                    g.DrawLine(left, top, left, bottom, SolidColor.Black, 1, LineStyles.Dot);
                    g.DrawLine(right, top, right, bottom, SolidColor.Black, 1, LineStyles.Dot);
                }
                #endregion                         // Draw Column Header Adjust Line
                break;

            case OperationStatus.AdjustRowHeight:
                #region Draw Row Header Adjust Line
                if (sheet.currentRowHeightChanging >= 0)
                {
                    RowHeader row = sheet.rows[sheet.currentRowHeightChanging];

                    RGFloat top    = row.Top * this.scaleFactor;
                    RGFloat bottom = Math.Max(top, PointToView(new Point(0, sheet.headerAdjustNewValue)).Y *this.scaleFactor);
                    RGFloat left   = ScrollViewLeft * this.scaleFactor;
                    RGFloat right  = ScrollViewLeft * this.scaleFactor + this.Width;

                    g.DrawLine(left, top, right, top, SolidColor.Black, 1, LineStyles.Dot);
                    g.DrawLine(left, bottom, right, bottom, SolidColor.Black, 1, LineStyles.Dot);
                }
                #endregion                         // Draw Row Header Adjust Line
                break;

            case OperationStatus.DragSelectionFillSerial:
            case OperationStatus.SelectionRangeMovePrepare:
            case OperationStatus.SelectionRangeMove:
                #region Selection Moving
                if (sheet.draggingSelectionRange != RangePosition.Empty &&
                    dc.DrawMode == DrawMode.View &&
                    sheet.HasSettings(WorksheetSettings.Edit_DragSelectionToMoveCells))
                {
                    var scaledSelectionMovingRect = CellsViewport.GetScaledAndClippedRangeRect(this,
                                                                                               sheet.draggingSelectionRange.StartPos,
                                                                                               sheet.draggingSelectionRange.EndPos,
                                                                                               controlStyle.SelectionBorderWidth);

                    scaledSelectionMovingRect.Offset(-1, -1);

                    SolidColor selectionBorderColor = controlStyle.Colors[ControlAppearanceColors.SelectionBorder];

                    dc.Graphics.DrawRectangle(scaledSelectionMovingRect,
                                              ColorUtility.FromAlphaColor(255, selectionBorderColor),
                                              controlStyle.SelectionBorderWidth, LineStyles.Solid);
                }
                #endregion                         // Selection Moving
                break;
            }
        }