コード例 #1
0
        private void OnLineColorChanged(object oldColor, object newColor)
        {
            if (updatingPen)
            {
                return;
            }

            Pen oldPen = Pen;
            Pen newPen = oldPen != null?oldPen.CloneCurrentValue() : new Pen();

            if (newColor is Color)
            {
                newPen.Brush = new SolidColorBrush((Color)newColor);
            }
            else
            {
                // no color -
                if (AllowNull)
                {
                    Pen = null;
                    return;
                }
                newPen.Brush = new SolidColorBrush(Colors.Transparent);
            }
            newPen.Freeze();
            Pen = newPen;
        }
コード例 #2
0
        private void OnDashStyleChanged(Pen oldDashStyle, Pen newDashStyle)
        {
            if (updatingPen)
            {
                return;
            }
            Pen oldPen = Pen;
            Pen newPen = oldPen != null?oldPen.CloneCurrentValue() : new Pen();

            newPen.DashStyle = newDashStyle.DashStyle;
            newPen.Freeze();
            Pen = newPen;
        }
コード例 #3
0
        private void OnThicknessChanged(Pen oldThickness, Pen newThickness)
        {
            if (updatingPen)
            {
                return;
            }
            Pen oldPen = Pen;
            Pen newPen = oldPen != null?oldPen.CloneCurrentValue() : new Pen();

            newPen.Thickness = newThickness.Thickness;
            newPen.Freeze();
            Pen = newPen;
        }
コード例 #4
0
 public static Pen GetOutPen(this Pen pen, ReadOnlyCoordinatesSystemManager coordinatesSystemManager)
 {
     if (pen?.CloneCurrentValue() is Pen p)
     {
         if (GetIn(p))
         {
             p.Thickness *= coordinatesSystemManager.WidthRatio;
         }
         return(p);
     }
     else
     {
         return(null);
     }
 }
コード例 #5
0
/*      void ILegacyDevice.PushOpacity(double opacity, Brush opacityMask)
 *      {
 *          Debug.Assert(opacityMask == null);
 *
 *          _ctx.PushOpacity(opacity);
 *      }
 */
        void ILegacyDevice.DrawGeometry(Brush brush, Pen pen, Brush strokeBrush, Geometry geometry)
        {
            if (pen != null)
            {
                if (strokeBrush == null)
                {
                    pen = null;
                }
                else
                {
                    pen       = pen.CloneCurrentValue();
                    pen.Brush = strokeBrush;
                }
            }

            _ctx.DrawGeometry(brush, pen, geometry);
        }
コード例 #6
0
        private Pen ReducePen(Pen pen, Rect bounds)
        {
            if (PenProxy.IsNull(pen))
            {
                return(null);
            }

            Brush b = ReduceBrush(pen.Brush, bounds);

            if (b == null)
            {
                return(null);
            }

            if (!Object.ReferenceEquals(b, pen.Brush))
            {
                pen = pen.CloneCurrentValue();

                pen.Brush = b;
            }

            return(pen);
        }