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