Beispiel #1
0
 /// <summary>
 /// See base docs.
 /// </summary>
 /// <param name="pen"></param>
 /// <param name="fromX"></param>
 /// <param name="fromY"></param>
 /// <param name="toX"></param>
 /// <param name="toY"></param>
 public override void DrawLine(VrsDrawing.IPen pen, int fromX, int fromY, int toX, int toY)
 {
     if (pen is PenWrapper penWrapper)
     {
         GdiPlusLock.EnforceSingleThread(() => {
             NativeDrawingContext.DrawLine(
                 penWrapper.NativePen,
                 fromX, fromY,
                 toX, toY
                 );
         });
     }
 }
Beispiel #2
0
        /// <summary>
        /// See interface docs.
        /// </summary>
        /// <param name="red"></param>
        /// <param name="green"></param>
        /// <param name="blue"></param>
        /// <param name="alpha"></param>
        /// <param name="strokeWidth"></param>
        /// <param name="isCached"></param>
        /// <returns></returns>
        protected override VrsDrawing.IPen CreatePenWrapper(int red, int green, int blue, int alpha, float strokeWidth, bool isCached)
        {
            VrsDrawing.IPen result = null;

            GdiPlusLock.EnforceSingleThread(() => {
                result = new PenWrapper(
                    new Pen(
                        Color.FromArgb(alpha, red, green, blue),
                        strokeWidth
                        ),
                    isCached
                    );
            });

            return(result);
        }
Beispiel #3
0
        /// <summary>
        /// See base docs.
        /// </summary>
        /// <param name="text"></param>
        /// <param name="font"></param>
        /// <param name="fillBrush"></param>
        /// <param name="outlinePen"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="alignment"></param>
        /// <param name="preferSpeedOverQuality"></param>
        public override void DrawText(string text, VrsDrawing.IFont font, VrsDrawing.IBrush fillBrush, VrsDrawing.IPen outlinePen, float x, float y, VrsDrawing.HorizontalAlignment alignment, bool preferSpeedOverQuality = true)
        {
            if (font is FontWrapper fontWrapper)
            {
                GdiPlusLock.EnforceSingleThread(() => {
                    var location = new PointF(x, y);

                    // Mono ignores these flags...
                    var stringFormat = new StringFormat()
                    {
                        Alignment     = Convert.ToSystemDrawingStringAlignment(alignment),
                        LineAlignment = Convert.ToSystemDrawingStringAlignment(alignment),
                        FormatFlags   = StringFormatFlags.NoWrap,
                    };

                    using (var graphicsPath = new GraphicsPath()) {
                        graphicsPath.AddString(
                            text,
                            fontWrapper.NativeFont.FontFamily,
                            (int)fontWrapper.NativeFont.Style,
                            fontWrapper.NativeFont.Size,
                            location,
                            stringFormat
                            );

                        NativeDrawingContext.SmoothingMode     = SmoothingMode.AntiAlias;
                        NativeDrawingContext.InterpolationMode = InterpolationMode.HighQualityBicubic;

                        if (outlinePen is PenWrapper outlinePenWrapper)
                        {
                            NativeDrawingContext.DrawPath(outlinePenWrapper.NativePen, graphicsPath);
                        }
                        if (fillBrush is BrushWrapper fillBrushWrapper)
                        {
                            NativeDrawingContext.FillPath(fillBrushWrapper.NativeBrush, graphicsPath);
                        }
                    }
                });
            }
        }
Beispiel #4
0
 /// <summary>
 /// Creates a new object.
 /// </summary>
 public CommonPenFactory()
 {
     Black     = CreatePenWrapper(0, 0, 0, 255, 1.0F, isCached: true);
     LightGray = CreatePenWrapper(211, 211, 211, 255, 1.0F, isCached: true);
 }
Beispiel #5
0
 /// <summary>
 /// See interface docs.
 /// </summary>
 /// <param name="text"></param>
 /// <param name="font"></param>
 /// <param name="fillBrush"></param>
 /// <param name="outlinePen"></param>
 /// <param name="x"></param>
 /// <param name="y"></param>
 /// <param name="alignment"></param>
 /// <param name="preferSpeedOverQuality"></param>
 public abstract void DrawText(string text, VrsDrawing.IFont font, VrsDrawing.IBrush fillBrush, VrsDrawing.IPen outlinePen, float x, float y, VrsDrawing.HorizontalAlignment alignment, bool preferSpeedOverQuality = true);
Beispiel #6
0
 /// <summary>
 /// See interface docs.
 /// </summary>
 /// <param name="pen"></param>
 /// <param name="fromX"></param>
 /// <param name="fromY"></param>
 /// <param name="toX"></param>
 /// <param name="toY"></param>
 public abstract void DrawLine(VrsDrawing.IPen pen, int fromX, int fromY, int toX, int toY);