예제 #1
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="position"></param>
 /// <param name="dataFormat"></param>
 /// <param name="formula"></param>
 public Range(RangePosition position, string dataFormat, string formula, RANGETYPE type, string font, float fontsize, ReoGridVerAlign valign, ReoGridHorAlign halign)
 {
     _position         = position;
     _formula          = formula;
     _numberFormatArgs = getDataFormat(dataFormat);
     _type             = type;
     Font     = font;
     FontSize = fontsize;
     HAlign   = halign;
     VAlign   = valign;
 }
예제 #2
0
 internal static string EncodeHorizontalAlign(ReoGridHorAlign halign)
 {
     switch (halign)
     {
         default:
         case ReoGridHorAlign.General:
             return "general";
         case ReoGridHorAlign.Left:
             return "left";
         case ReoGridHorAlign.Center:
             return "center";
         case ReoGridHorAlign.Right:
             return "right";
         case ReoGridHorAlign.DistributedIndent:
             return "distributed-indent";
     }
 }
예제 #3
0
            public void SetEditControlAlignment(ReoGridHorAlign align)
            {
                switch (align)
                {
                default:
                case ReoGridHorAlign.Left:
                    this.editTextbox.TextAlign = HorizontalAlignment.Left;
                    break;

                case ReoGridHorAlign.Center:
                    this.editTextbox.TextAlign = HorizontalAlignment.Center;
                    break;

                case ReoGridHorAlign.Right:
                    this.editTextbox.TextAlign = HorizontalAlignment.Right;
                    break;
                }
            }
예제 #4
0
            internal static string EncodeHorizontalAlign(ReoGridHorAlign halign)
            {
                switch (halign)
                {
                default:
                case ReoGridHorAlign.General:
                    return("general");

                case ReoGridHorAlign.Left:
                    return("left");

                case ReoGridHorAlign.Center:
                    return("center");

                case ReoGridHorAlign.Right:
                    return("right");

                case ReoGridHorAlign.DistributedIndent:
                    return("distributed-indent");
                }
            }
예제 #5
0
        //public void DrawText(string text, string fontName, float size, SolidColor color, Rectangle rect)
        //{
        //	if (color.IsTransparent)
        //	{
        //		return;
        //	}

        //	var font = this.resourceManager.GetFont(fontName, size, WFFontStyle.Regular);

        //	if (font != null)
        //	{
        //		lock (this.sf)
        //		{
        //			sf.Alignment = StringAlignment.Near;
        //			sf.LineAlignment = StringAlignment.Near;

        //			g.DrawString(text, font, this.resourceManager.GetBrush(color), rect, sf);
        //		}
        //	}
        //}

        public void DrawText(string text, string fontName, float size, SolidColor color, Rectangle rect,
                             ReoGridHorAlign halign, ReoGridVerAlign valign)
        {
            if (color.IsTransparent)
            {
                return;
            }

            var font = this.resourceManager.GetFont(fontName, size, WFFontStyle.Regular);

            if (font != null)
            {
                using (var sf = new StringFormat(StringFormat.GenericTypographic)
                {
                    FormatFlags = StringFormatFlags.MeasureTrailingSpaces |
                                  StringFormatFlags.FitBlackBox | StringFormatFlags.NoClip | StringFormatFlags.NoWrap
                })
                {
                    switch (halign)
                    {
                    default: sf.Alignment = StringAlignment.Near; break;

                    case ReoGridHorAlign.Center: sf.Alignment = StringAlignment.Center; break;

                    case ReoGridHorAlign.Right: sf.Alignment = StringAlignment.Far; break;
                    }

                    switch (valign)
                    {
                    default: sf.LineAlignment = StringAlignment.Near; break;

                    case ReoGridVerAlign.Middle: sf.LineAlignment = StringAlignment.Center; break;

                    case ReoGridVerAlign.Bottom: sf.LineAlignment = StringAlignment.Far; break;
                    }

                    g.DrawString(text, font, this.resourceManager.GetBrush(color), rect, sf);
                }
            }
        }
예제 #6
0
        //public void DrawText(string text, string fontName, float size, SolidColor color, Rectangle rect)
        //{
        //	if (color.IsTransparent)
        //	{
        //		return;
        //	}

        //	var font = this.resourceManager.GetFont(fontName, size, WFFontStyle.Regular);

        //	if (font != null)
        //	{
        //		lock (this.sf)
        //		{
        //			sf.Alignment = StringAlignment.Near;
        //			sf.LineAlignment = StringAlignment.Near;

        //			g.DrawString(text, font, this.resourceManager.GetBrush(color), rect, sf);
        //		}
        //	}
        //}

        public void DrawText(string text, string fontName, float size, SolidColor color, Rectangle rect,
                             ReoGridHorAlign halign, ReoGridVerAlign valign)
        {
            if (color.IsTransparent)
            {
                return;
            }

            var font = this.resourceManager.GetFont(fontName, size, WFFontStyle.Regular);

            if (font != null)
            {
                lock (this.sf)
                {
                    switch (halign)
                    {
                    default: sf.Alignment = StringAlignment.Near; break;

                    case ReoGridHorAlign.Center: sf.Alignment = StringAlignment.Center; break;

                    case ReoGridHorAlign.Right: sf.Alignment = StringAlignment.Far; break;
                    }

                    switch (valign)
                    {
                    default: sf.LineAlignment = StringAlignment.Near; break;

                    case ReoGridVerAlign.Middle: sf.LineAlignment = StringAlignment.Center; break;

                    case ReoGridVerAlign.Bottom: sf.LineAlignment = StringAlignment.Far; break;
                    }

                    g.DrawString(text, font, this.resourceManager.GetBrush(color), rect, sf);
                }
            }
        }
예제 #7
0
        public void DrawText(string text, string fontName, double size, SolidColor color, Rectangle rect, ReoGridHorAlign halign, ReoGridVerAlign valign)
        {
            if (rect.Width > 0 && rect.Height > 0 && !string.IsNullOrEmpty(text))
            {
                FormattedText ft = new FormattedText(text, System.Threading.Thread.CurrentThread.CurrentCulture,
                                                     FlowDirection.LeftToRight, this.resourceManager.GetTypeface(fontName),
                                                     size * PlatformUtility.GetDPI() / 72.0,
                                                     this.resourceManager.GetBrush(color));

                ft.MaxTextWidth  = rect.Width;
                ft.MaxTextHeight = rect.Height;

                switch (halign)
                {
                default:
                    break;

                case ReoGridHorAlign.Left:
                    ft.TextAlignment = TextAlignment.Left;
                    break;

                case ReoGridHorAlign.Center:
                    ft.TextAlignment = TextAlignment.Center;
                    break;

                case ReoGridHorAlign.Right:
                    ft.TextAlignment = TextAlignment.Right;
                    break;
                }

                switch (valign)
                {
                default:
                    break;

                case ReoGridVerAlign.Middle:
                    rect.Y += (rect.Height - ft.Height) / 2;
                    break;

                case ReoGridVerAlign.Bottom:
                    rect.Y += (rect.Height - ft.Height);
                    break;
                }

                g.DrawText(ft, rect.Location);
            }
        }
예제 #8
0
        public void LoadPage()
        {
            var sheet = grid.CurrentWorksheet;

            WorksheetRangeStyle style = sheet.GetRangeStyles(sheet.SelectionRange);

            if (style.TextWrapMode == TextWrapMode.WordBreak ||
                style.TextWrapMode == TextWrapMode.BreakAll)
            {
                backupTextWrapState = CheckState.Checked;
            }
            else
            {
                backupTextWrapState = CheckState.Unchecked;
            }

            backupHorAlign = style.HAlign;
            backupVerAlign = style.VAlign;

            switch (style.HAlign)
            {
            case ReoGridHorAlign.General:
                cmbHorAlign.SelectedIndex = 0; break;

            case ReoGridHorAlign.Left:
                cmbHorAlign.SelectedIndex = 1; break;

            case ReoGridHorAlign.Center:
                cmbHorAlign.SelectedIndex = 2; break;

            case ReoGridHorAlign.Right:
                cmbHorAlign.SelectedIndex = 3; break;

            case ReoGridHorAlign.DistributedIndent:
                cmbHorAlign.SelectedIndex = 4; break;
            }

            switch (style.VAlign)
            {
            case ReoGridVerAlign.General:
                cmbVerAlign.SelectedIndex = 0; break;

            case ReoGridVerAlign.Top:
                cmbVerAlign.SelectedIndex = 1; break;

            case ReoGridVerAlign.Middle:
                cmbVerAlign.SelectedIndex = 2; break;

            case ReoGridVerAlign.Bottom:
                cmbVerAlign.SelectedIndex = 3; break;
            }

            chkWrapText.CheckState = backupTextWrapState;

            backupIndent    = style.Indent;
            numIndent.Value = backupIndent;

            // cell text rotate

            var angle = style.RotationAngle;

            if (angle < -90)
            {
                angle = -90;
            }
            if (angle > 90)
            {
                angle = 90;
            }

            backupRotateAngle       = angle;
            textRotateControl.Angle = (int)angle;
            numRotationAngle.Value  = (int)angle;
        }
예제 #9
0
        public WorksheetReusableAction CreateUpdateAction()
        {
            var style = new WorksheetRangeStyle();

            ReoGridHorAlign halign = ReoGridHorAlign.General;
            ReoGridVerAlign valign = ReoGridVerAlign.Middle;

            switch (cmbHorAlign.SelectedIndex)
            {
            default:
            case 0: halign = ReoGridHorAlign.General; break;

            case 1: halign = ReoGridHorAlign.Left; break;

            case 2: halign = ReoGridHorAlign.Center; break;

            case 3: halign = ReoGridHorAlign.Right; break;

            case 4: halign = ReoGridHorAlign.DistributedIndent; break;
            }

            switch (cmbVerAlign.SelectedIndex)
            {
            default:
            case 0: valign = ReoGridVerAlign.General; break;

            case 1: valign = ReoGridVerAlign.Top; break;

            case 2: valign = ReoGridVerAlign.Middle; break;

            case 3: valign = ReoGridVerAlign.Bottom; break;
            }

            if (backupHorAlign != halign)
            {
                style.Flag  |= PlainStyleFlag.HorizontalAlign;
                style.HAlign = halign;
            }

            if (backupVerAlign != valign)
            {
                style.Flag  |= PlainStyleFlag.VerticalAlign;
                style.VAlign = valign;
            }

            if (backupTextWrapState != chkWrapText.CheckState)
            {
                style.Flag |= PlainStyleFlag.TextWrap;

                if (chkWrapText.Checked)
                {
                    style.TextWrapMode = TextWrapMode.WordBreak;
                }
                else
                {
                    style.TextWrapMode = TextWrapMode.NoWrap;
                }
            }

            if (backupIndent != numIndent.Value)
            {
                style.Flag  |= PlainStyleFlag.Indent;
                style.Indent = (ushort)numIndent.Value;
            }

            if (backupRotateAngle != textRotateControl.Angle)
            {
                style.RotationAngle = textRotateControl.Angle;
                style.Flag         |= PlainStyleFlag.RotationAngle;
            }

            return(style.Flag == PlainStyleFlag.None ? null : new SetRangeStyleAction(grid.CurrentWorksheet.SelectionRange, style));
        }
예제 #10
0
        public void LoadPage()
        {
            ReoGridRangeStyle style = grid.GetRangeStyle(grid.SelectionRange);

            if (style.TextWrapMode == TextWrapMode.WordBreak
                || style.TextWrapMode == TextWrapMode.BreakAll)
            {
                backupTextWrapState = CheckState.Checked;
            }
            else
            {
                backupTextWrapState = CheckState.Unchecked;
            }

            backupHorAlign = style.HAlign;
            backupVerAlign = style.VAlign;

            switch (style.HAlign)
            {
                case ReoGridHorAlign.General:
                    cmbHorAlign.SelectedIndex = 0; break;
                case ReoGridHorAlign.Left:
                    cmbHorAlign.SelectedIndex = 1; break;
                case ReoGridHorAlign.Center:
                    cmbHorAlign.SelectedIndex = 2; break;
                case ReoGridHorAlign.Right:
                    cmbHorAlign.SelectedIndex = 3; break;
                case ReoGridHorAlign.DistributedIndent:
                    cmbHorAlign.SelectedIndex = 4; break;
            }

            switch (style.VAlign)
            {
                case ReoGridVerAlign.Top:
                    cmbVerAlign.SelectedIndex = 0; break;
                case ReoGridVerAlign.Middle:
                    cmbVerAlign.SelectedIndex = 1; break;
                case ReoGridVerAlign.Bottom:
                    cmbVerAlign.SelectedIndex = 2; break;
            }

            chkWrapText.CheckState = backupTextWrapState;
        }
예제 #11
0
 public void DrawText(string text, string fontName, RGFloat size, SolidColor color, Rectangle rect, ReoGridHorAlign halign, ReoGridVerAlign valign)
 {
     throw new NotImplementedException();
 }
예제 #12
0
        internal void DrawText(string text, Paint p, Typeface font, float size, Rectangle rect, ReoGridHorAlign halign, ReoGridVerAlign valign)
        {
            p.SetTypeface(font);
            p.TextSize = size;

            var measuredRect = new Rect();

            p.GetTextBounds(text, 0, text.Length, measuredRect);

            float x = rect.Left, y = rect.Top;

            switch (halign)
            {
            case ReoGridHorAlign.General:
            case ReoGridHorAlign.Left:
                x = rect.Left;
                break;

            case ReoGridHorAlign.Center:
                x = rect.Left + (rect.Width - measuredRect.Width()) / 2;
                break;

            case ReoGridHorAlign.Right:
                x = rect.Right - measuredRect.Width();
                break;
            }

            switch (valign)
            {
            case ReoGridVerAlign.Top:
                y = rect.Top + measuredRect.Height();
                break;

            case ReoGridVerAlign.Middle:
                y = rect.Bottom - (rect.Height - measuredRect.Height()) / 2;
                break;

            case ReoGridVerAlign.General:
            case ReoGridVerAlign.Bottom:
                y = rect.Bottom;
                break;
            }

            this.canvas.DrawText(text, x, y, p);
        }
예제 #13
0
 public void DrawText(string text, string fontName, float size, SolidColor color, Rectangle rect, ReoGridHorAlign halign, ReoGridVerAlign valign)
 {
     using (var p = new Paint())
     {
         using (var font = Typeface.Create(fontName, Android.Graphics.TypefaceStyle.Normal))
         {
             this.DrawText(text, p, font, size, rect, halign, valign);
         }
     }
 }
예제 #14
0
파일: Axis.cs 프로젝트: datadiode/ReoGrid
        /// <summary>
        /// Render data label view.
        /// </summary>
        /// <param name="dc">Platform no-associated drawing context instance.</param>
        protected override void OnPaint(DrawingContext dc)
        {
            base.OnPaint(dc);

            var ai = AxisInfo;

            if (ai == null)
            {
                return;
            }

            var g = dc.Graphics;

            var ds         = this.Chart.DataSource;
            var clientRect = this.ClientBounds;

            RGFloat maxWidth  = 0;
            RGFloat maxHeight = 0;

            int dataCount = ds.CategoryCount;

            for (int i = 0; i < dataCount; i++)
            {
                var title = ds.GetCategoryName(i);

                if (!string.IsNullOrEmpty(title))
                {
                    var size = PlatformUtility.MeasureText(dc, title, FontName, FontSize, Drawing.Text.FontStyles.Regular);

                    if (maxWidth < size.Width)
                    {
                        maxWidth = size.Width;
                    }
                    if (maxHeight < size.Height)
                    {
                        maxHeight = size.Height;
                    }
                }
            }

            if (Orientation == AxisOrientation.Horizontal && maxWidth != 0)
            {
                RGFloat columnWidth = (clientRect.Width) / dataCount;

                var showableColumns = clientRect.Width / maxWidth;

                int showTitleStride = (int)Math.Ceiling(dataCount / showableColumns);
                if (showTitleStride < 1)
                {
                    showTitleStride = 1;
                }

                ReoGridHorAlign halign = showTitleStride == 1 ? ReoGridHorAlign.Center : ReoGridHorAlign.Left;

                RGFloat stepX = clientRect.Width / dataCount;

                for (int i = 0; i < dataCount; i += showTitleStride)
                {
                    string text = ds.GetCategoryName(i);

                    if (!string.IsNullOrEmpty(text))
                    {
                        var textRect = new Rectangle(columnWidth * i, 0, columnWidth * showTitleStride, clientRect.Height);

                        g.DrawText(text, FontName, FontSize, ForeColor, textRect, halign, ReoGridVerAlign.Middle);
                    }
                }
            }
            else if (Orientation == AxisOrientation.Vertical && maxHeight != 0)
            {
                RGFloat rowHeight = (clientRect.Height - 10) / dataCount;

                var showableRows = clientRect.Height / maxHeight;

                int showTitleStride = (int)Math.Ceiling(dataCount / showableRows);
                if (showTitleStride < 1)
                {
                    showTitleStride = 1;
                }

                for (int i = 0; i < dataCount; i += showTitleStride)
                {
                    string text = ds.GetCategoryName(i);

                    if (!string.IsNullOrEmpty(text))
                    {
                        var textRect = new Rectangle(0, rowHeight * i + 5, clientRect.Width, rowHeight);

                        g.DrawText(text, FontName, FontSize, ForeColor, textRect, ReoGridHorAlign.Right, ReoGridVerAlign.Middle);
                    }
                }
            }
        }
예제 #15
0
 public void SetEditControlAlignment(ReoGridHorAlign align)
 {
     // TODO
 }