コード例 #1
0
        void ISelectable.DrawSelection(GaugeGraphics g, bool designTimeSelection)
        {
            if (GetGauge() == null || GetScale() == null)
            {
                return;
            }
            Stack stack = new Stack();

            for (NamedElement namedElement = GetGauge().ParentObject; namedElement != null; namedElement = (NamedElement)((IRenderable)namedElement).GetParentRenderable())
            {
                stack.Push(namedElement);
            }
            foreach (IRenderable item in stack)
            {
                g.CreateDrawRegion(item.GetBoundRect(g));
            }
            g.CreateDrawRegion(((IRenderable)GetGauge()).GetBoundRect(g));
            using (GraphicsPath graphicsPath = GetPointerPath(g))
            {
                if (graphicsPath != null)
                {
                    RectangleF bounds = graphicsPath.GetBounds();
                    g.DrawSelection(bounds, designTimeSelection, Common.GaugeCore.SelectionBorderColor, Common.GaugeCore.SelectionMarkerColor);
                }
            }
            g.RestoreDrawRegion();
            foreach (IRenderable item2 in stack)
            {
                _ = item2;
                g.RestoreDrawRegion();
            }
        }
コード例 #2
0
        internal void SetDrawRegion(GaugeGraphics g)
        {
            RectangleF rect = new RectangleF(GetGauge().PivotPoint.ToPoint(), new SizeF(0f, 0f));

            rect.Inflate(radius / 2f, radius / 2f);
            g.CreateDrawRegion(rect);
        }
コード例 #3
0
        public void SetDrawRegion(GaugeGraphics g)
        {
            RectangleF rect = new RectangleF(this.GetGauge().PivotPoint.ToPoint(), new SizeF(0f, 0f));

            rect.Inflate((float)(this.radius / 2.0), (float)(this.radius / 2.0));
            g.CreateDrawRegion(rect);
        }
コード例 #4
0
        void ISelectable.DrawSelection(GaugeGraphics g, bool designTimeSelection)
        {
            Stack stack = new Stack();

            for (NamedElement namedElement = this.ParentObject; namedElement != null; namedElement = (NamedElement)((IRenderable)namedElement).GetParentRenderable())
            {
                stack.Push(namedElement);
            }
            foreach (IRenderable item in stack)
            {
                g.CreateDrawRegion(item.GetBoundRect(g));
            }
            g.CreateDrawRegion(((IRenderable)this).GetBoundRect(g));
            g.DrawSelection(g.GetAbsoluteRectangle(new RectangleF(0f, 0f, 100f, 100f)), designTimeSelection, this.Common.GaugeCore.SelectionBorderColor, this.Common.GaugeCore.SelectionMarkerColor);
            g.RestoreDrawRegion();
            foreach (IRenderable item2 in stack)
            {
                IRenderable renderable = item2;
                g.RestoreDrawRegion();
            }
        }
コード例 #5
0
        void ISelectable.DrawSelection(GaugeGraphics g, bool designTimeSelection)
        {
            Stack stack = new Stack();

            for (NamedElement namedElement = base.ParentObject; namedElement != null; namedElement = (NamedElement)((IRenderable)namedElement).GetParentRenderable())
            {
                stack.Push(namedElement);
            }
            foreach (IRenderable item in stack)
            {
                g.CreateDrawRegion(item.GetBoundRect(g));
            }
            g.CreateDrawRegion(((IRenderable)this).GetBoundRect(g));
            RectangleF frameRectangle = base.Frame.GetFrameRectangle(g);

            g.DrawSelection(frameRectangle, (float)(-3.0 / g.Graphics.PageScale), designTimeSelection, this.Common.GaugeCore.SelectionBorderColor, this.Common.GaugeCore.SelectionMarkerColor);
            g.RestoreDrawRegion();
            foreach (IRenderable item2 in stack)
            {
                IRenderable renderable = item2;
                g.RestoreDrawRegion();
            }
        }
コード例 #6
0
        public GraphicsPath GetTextPath(GaugeGraphics g)
        {
            if (!this.Visible)
            {
                return(null);
            }
            if (this.Text.Length == 0)
            {
                return(null);
            }
            RectangleF   absoluteRectangle = g.GetAbsoluteRectangle(new RectangleF(0f, 0f, 100f, 100f));
            GraphicsPath graphicsPath      = new GraphicsPath();
            string       text = this.Text;
            Font         font = this.Font;

            text = text.Replace("\\n", "\n");
            float emSize;

            if (this.ResizeMode == ResizeMode.AutoFit)
            {
                SizeF sizeF        = g.MeasureString(text, font);
                SizeF absoluteSize = g.GetAbsoluteSize(new SizeF(100f, 100f));
                float num          = absoluteSize.Width / sizeF.Width;
                float num2         = absoluteSize.Height / sizeF.Height;
                emSize = (float)((!(num < num2)) ? (font.SizeInPoints * num2 * 1.2999999523162842 * g.Graphics.DpiY / 96.0) : (font.SizeInPoints * num * 1.2999999523162842 * g.Graphics.DpiY / 96.0));
            }
            else
            {
                if (this.FontUnit == FontUnit.Percent)
                {
                    g.RestoreDrawRegion();
                    emSize = g.GetAbsoluteDimension(font.Size);
                    RectangleF boundRect = ((IRenderable)this).GetBoundRect(g);
                    g.CreateDrawRegion(boundRect);
                }
                else
                {
                    emSize = (float)(font.SizeInPoints * g.Graphics.DpiY / 96.0);
                }
                emSize = (float)(emSize * 1.2999999523162842);
            }
            StringFormat stringFormat = new StringFormat();

            if (this.TextAlignment == ContentAlignment.TopLeft)
            {
                stringFormat.Alignment     = StringAlignment.Near;
                stringFormat.LineAlignment = StringAlignment.Near;
            }
            else if (this.TextAlignment == ContentAlignment.TopCenter)
            {
                stringFormat.Alignment     = StringAlignment.Center;
                stringFormat.LineAlignment = StringAlignment.Near;
            }
            else if (this.TextAlignment == ContentAlignment.TopRight)
            {
                stringFormat.Alignment     = StringAlignment.Far;
                stringFormat.LineAlignment = StringAlignment.Near;
            }
            else if (this.TextAlignment == ContentAlignment.MiddleLeft)
            {
                stringFormat.Alignment     = StringAlignment.Near;
                stringFormat.LineAlignment = StringAlignment.Center;
            }
            else if (this.TextAlignment == ContentAlignment.MiddleCenter)
            {
                stringFormat.Alignment     = StringAlignment.Center;
                stringFormat.LineAlignment = StringAlignment.Center;
            }
            else if (this.TextAlignment == ContentAlignment.MiddleRight)
            {
                stringFormat.Alignment     = StringAlignment.Far;
                stringFormat.LineAlignment = StringAlignment.Center;
            }
            else if (this.TextAlignment == ContentAlignment.BottomLeft)
            {
                stringFormat.Alignment     = StringAlignment.Near;
                stringFormat.LineAlignment = StringAlignment.Far;
            }
            else if (this.TextAlignment == ContentAlignment.BottomCenter)
            {
                stringFormat.Alignment     = StringAlignment.Center;
                stringFormat.LineAlignment = StringAlignment.Far;
            }
            else
            {
                stringFormat.Alignment     = StringAlignment.Far;
                stringFormat.LineAlignment = StringAlignment.Far;
            }
            graphicsPath.AddString(text, font.FontFamily, (int)font.Style, emSize, absoluteRectangle, stringFormat);
            if (this.Angle != 0.0)
            {
                PointF point = new PointF((float)(absoluteRectangle.X + absoluteRectangle.Width / 2.0), (float)(absoluteRectangle.Y + absoluteRectangle.Height / 2.0));
                using (Matrix matrix = new Matrix())
                {
                    matrix.RotateAt(this.Angle, point);
                    graphicsPath.Transform(matrix);
                    return(graphicsPath);
                }
            }
            return(graphicsPath);
        }
コード例 #7
0
        void ISelectable.DrawSelection(GaugeGraphics g, bool designTimeSelection)
        {
            if (GetGauge() == null)
            {
                return;
            }
            Stack stack = new Stack();

            for (NamedElement namedElement = GetGauge().ParentObject; namedElement != null; namedElement = (NamedElement)((IRenderable)namedElement).GetParentRenderable())
            {
                stack.Push(namedElement);
            }
            foreach (IRenderable item in stack)
            {
                g.CreateDrawRegion(item.GetBoundRect(g));
            }
            g.CreateDrawRegion(((IRenderable)GetGauge()).GetBoundRect(g));
            SetDrawRegion(g);
            Gap gap = new Gap(GetRadius());

            gap.SetOffset(Placement.Cross, Width);
            gap.SetBase();
            if (MajorTickMark.Visible)
            {
                gap.SetOffsetBase(MajorTickMark.Placement, MajorTickMark.Length);
                if (MajorTickMark.Placement == Placement.Outside)
                {
                    gap.Outside = Math.Max(gap.Outside, MajorTickMark.DistanceFromScale + MajorTickMark.Length + Width / 2f);
                    gap.Inside  = Math.Max(gap.Inside, 0f - MajorTickMark.DistanceFromScale);
                }
                else if (MajorTickMark.Placement == Placement.Cross)
                {
                    gap.Outside = Math.Max(gap.Outside, 0f - MajorTickMark.DistanceFromScale + MajorTickMark.Length / 2f);
                    gap.Inside  = Math.Max(gap.Inside, MajorTickMark.DistanceFromScale + MajorTickMark.Length / 2f);
                }
                else
                {
                    gap.Outside = Math.Max(gap.Outside, 0f - MajorTickMark.DistanceFromScale);
                    gap.Inside  = Math.Max(gap.Inside, MajorTickMark.DistanceFromScale + MajorTickMark.Length + Width / 2f);
                }
            }
            if (MinorTickMark.Visible)
            {
                gap.SetOffsetBase(MinorTickMark.Placement, MinorTickMark.Length);
                if (MinorTickMark.Placement == Placement.Outside)
                {
                    gap.Outside = Math.Max(gap.Outside, MinorTickMark.DistanceFromScale + MinorTickMark.Length + Width / 2f);
                    gap.Inside  = Math.Max(gap.Inside, 0f - MinorTickMark.DistanceFromScale);
                }
                else if (MinorTickMark.Placement == Placement.Cross)
                {
                    gap.Outside = Math.Max(gap.Outside, 0f - MinorTickMark.DistanceFromScale + MinorTickMark.Length / 2f);
                    gap.Inside  = Math.Max(gap.Inside, MinorTickMark.DistanceFromScale + MinorTickMark.Length / 2f);
                }
                else
                {
                    gap.Outside = Math.Max(gap.Outside, 0f - MinorTickMark.DistanceFromScale);
                    gap.Inside  = Math.Max(gap.Inside, MinorTickMark.DistanceFromScale + MinorTickMark.Length + Width / 2f);
                }
            }
            if (LabelStyle.Visible)
            {
                if (LabelStyle.Placement == Placement.Outside)
                {
                    gap.Outside = Math.Max(gap.Outside, LabelStyle.DistanceFromScale + (float)LabelStyle.Font.Height + Width / 2f);
                    gap.Inside  = Math.Max(gap.Inside, 0f - LabelStyle.DistanceFromScale);
                }
                else if (LabelStyle.Placement == Placement.Cross)
                {
                    gap.Outside = Math.Max(gap.Outside, 0f - LabelStyle.DistanceFromScale + (float)LabelStyle.Font.Height / 2f);
                    gap.Inside  = Math.Max(gap.Inside, LabelStyle.DistanceFromScale + (float)LabelStyle.Font.Height / 2f);
                }
                else
                {
                    gap.Outside = Math.Max(gap.Outside, 0f - LabelStyle.DistanceFromScale);
                    gap.Inside  = Math.Max(gap.Inside, LabelStyle.DistanceFromScale + (float)LabelStyle.Font.Height + Width / 2f);
                }
            }
            float angularMargin = 4f;
            float num           = 5f;

            using (GraphicsPath graphicsPath = GetBarPath(gap.Inside + num, gap.Outside + num, angularMargin))
            {
                if (graphicsPath != null)
                {
                    PointF[] selectionMarkers = GetSelectionMarkers(g, gap.Inside + num, gap.Outside + num, angularMargin);
                    g.DrawRadialSelection(g, graphicsPath, selectionMarkers, designTimeSelection, Common.GaugeCore.SelectionBorderColor, Common.GaugeCore.SelectionMarkerColor);
                }
            }
            g.RestoreDrawRegion();
            g.RestoreDrawRegion();
            foreach (IRenderable item2 in stack)
            {
                _ = item2;
                g.RestoreDrawRegion();
            }
        }
コード例 #8
0
 void ISelectable.DrawSelection(GaugeGraphics g, bool designTimeSelection)
 {
     if (this.GetGauge() != null)
     {
         Stack stack = new Stack();
         for (NamedElement namedElement = this.GetGauge().ParentObject; namedElement != null; namedElement = (NamedElement)((IRenderable)namedElement).GetParentRenderable())
         {
             stack.Push(namedElement);
         }
         foreach (IRenderable item in stack)
         {
             g.CreateDrawRegion(item.GetBoundRect(g));
         }
         g.CreateDrawRegion(((IRenderable)this.GetGauge()).GetBoundRect(g));
         Gap gap = new Gap(this.Position);
         gap.SetOffset(Placement.Cross, this.Width);
         gap.SetBase();
         if (this.MajorTickMark.Visible)
         {
             gap.SetOffsetBase(this.MajorTickMark.Placement, this.MajorTickMark.Length);
             if (this.MajorTickMark.Placement == Placement.Outside)
             {
                 gap.Outside = Math.Max(gap.Outside, (float)(this.MajorTickMark.DistanceFromScale + this.MajorTickMark.Length + this.Width / 2.0));
                 gap.Inside  = Math.Max(gap.Inside, (float)(0.0 - this.MajorTickMark.DistanceFromScale));
             }
             else if (this.MajorTickMark.Placement == Placement.Cross)
             {
                 gap.Outside = Math.Max(gap.Outside, (float)(0.0 - this.MajorTickMark.DistanceFromScale + this.MajorTickMark.Length / 2.0));
                 gap.Inside  = Math.Max(gap.Inside, (float)(this.MajorTickMark.DistanceFromScale + this.MajorTickMark.Length / 2.0));
             }
             else
             {
                 gap.Outside = Math.Max(gap.Outside, (float)(0.0 - this.MajorTickMark.DistanceFromScale));
                 gap.Inside  = Math.Max(gap.Inside, (float)(this.MajorTickMark.DistanceFromScale + this.MajorTickMark.Length + this.Width / 2.0));
             }
         }
         if (this.MinorTickMark.Visible)
         {
             gap.SetOffsetBase(this.MinorTickMark.Placement, this.MinorTickMark.Length);
             if (this.MinorTickMark.Placement == Placement.Outside)
             {
                 gap.Outside = Math.Max(gap.Outside, (float)(this.MinorTickMark.DistanceFromScale + this.MinorTickMark.Length + this.Width / 2.0));
                 gap.Inside  = Math.Max(gap.Inside, (float)(0.0 - this.MinorTickMark.DistanceFromScale));
             }
             else if (this.MinorTickMark.Placement == Placement.Cross)
             {
                 gap.Outside = Math.Max(gap.Outside, (float)(0.0 - this.MinorTickMark.DistanceFromScale + this.MinorTickMark.Length / 2.0));
                 gap.Inside  = Math.Max(gap.Inside, (float)(this.MinorTickMark.DistanceFromScale + this.MinorTickMark.Length / 2.0));
             }
             else
             {
                 gap.Outside = Math.Max(gap.Outside, (float)(0.0 - this.MinorTickMark.DistanceFromScale));
                 gap.Inside  = Math.Max(gap.Inside, (float)(this.MinorTickMark.DistanceFromScale + this.MinorTickMark.Length + this.Width / 2.0));
             }
         }
         if (this.LabelStyle.Visible)
         {
             if (this.LabelStyle.Placement == Placement.Outside)
             {
                 gap.Outside = Math.Max(gap.Outside, (float)(this.LabelStyle.DistanceFromScale + (float)this.LabelStyle.Font.Height + this.Width / 2.0));
                 gap.Inside  = Math.Max(gap.Inside, (float)(0.0 - this.LabelStyle.DistanceFromScale));
             }
             else if (this.LabelStyle.Placement == Placement.Cross)
             {
                 gap.Outside = Math.Max(gap.Outside, (float)(0.0 - this.LabelStyle.DistanceFromScale + (float)this.LabelStyle.Font.Height / 2.0));
                 gap.Inside  = Math.Max(gap.Inside, (float)(this.LabelStyle.DistanceFromScale + (float)this.LabelStyle.Font.Height / 2.0));
             }
             else
             {
                 gap.Outside = Math.Max(gap.Outside, (float)(0.0 - this.LabelStyle.DistanceFromScale));
                 gap.Inside  = Math.Max(gap.Inside, (float)(this.LabelStyle.DistanceFromScale + (float)this.LabelStyle.Font.Height + this.Width / 2.0));
             }
         }
         using (GraphicsPath graphicsPath = this.GetBarPath(gap.Inside, gap.Outside))
         {
             if (graphicsPath != null)
             {
                 RectangleF bounds = graphicsPath.GetBounds();
                 g.DrawSelection(bounds, designTimeSelection, this.Common.GaugeCore.SelectionBorderColor, this.Common.GaugeCore.SelectionMarkerColor);
             }
         }
         g.RestoreDrawRegion();
         foreach (IRenderable item2 in stack)
         {
             IRenderable renderable = item2;
             g.RestoreDrawRegion();
         }
     }
 }