コード例 #1
0
        /// <inheritdoc/>
        public override void Draw(object dc, TextShape text, double dx, double dy, object db, object r)
        {
            var dxf = dc as DxfDocument;

            var properties = (ImmutableArray <Property>)db;
            var record     = (Record)r;
            var tbind      = text.BindText(properties, record);

            if (string.IsNullOrEmpty(tbind))
            {
                return;
            }

            var style             = text.Style;
            var stroke            = ToColor(style.Stroke);
            var strokeTansparency = ToTransparency(style.Stroke);

            var    attachmentPoint = default(MTextAttachmentPoint);
            double x, y;
            var    rect = Spatial.Rect2.FromPoints(
                text.TopLeft.X,
                text.TopLeft.Y,
                text.BottomRight.X,
                text.BottomRight.Y,
                dx, dy);

            switch (text.Style.TextStyle.TextHAlignment)
            {
            default:
            case TextHAlignment.Left:
                x = rect.X;
                break;

            case TextHAlignment.Center:
                x = rect.X + rect.Width / 2.0;
                break;

            case TextHAlignment.Right:
                x = rect.X + rect.Width;
                break;
            }

            switch (text.Style.TextStyle.TextVAlignment)
            {
            default:
            case TextVAlignment.Top:
                y = rect.Y;
                break;

            case TextVAlignment.Center:
                y = rect.Y + rect.Height / 2.0;
                break;

            case TextVAlignment.Bottom:
                y = rect.Y + rect.Height;
                break;
            }

            switch (text.Style.TextStyle.TextVAlignment)
            {
            default:
            case TextVAlignment.Top:
                switch (text.Style.TextStyle.TextHAlignment)
                {
                default:
                case TextHAlignment.Left:
                    attachmentPoint = MTextAttachmentPoint.TopLeft;
                    break;

                case TextHAlignment.Center:
                    attachmentPoint = MTextAttachmentPoint.TopCenter;
                    break;

                case TextHAlignment.Right:
                    attachmentPoint = MTextAttachmentPoint.TopRight;
                    break;
                }
                break;

            case TextVAlignment.Center:
                switch (text.Style.TextStyle.TextHAlignment)
                {
                default:
                case TextHAlignment.Left:
                    attachmentPoint = MTextAttachmentPoint.MiddleLeft;
                    break;

                case TextHAlignment.Center:
                    attachmentPoint = MTextAttachmentPoint.MiddleCenter;
                    break;

                case TextHAlignment.Right:
                    attachmentPoint = MTextAttachmentPoint.MiddleRight;
                    break;
                }
                break;

            case TextVAlignment.Bottom:
                switch (text.Style.TextStyle.TextHAlignment)
                {
                default:
                case TextHAlignment.Left:
                    attachmentPoint = MTextAttachmentPoint.BottomLeft;
                    break;

                case TextHAlignment.Center:
                    attachmentPoint = MTextAttachmentPoint.BottomCenter;
                    break;

                case TextHAlignment.Right:
                    attachmentPoint = MTextAttachmentPoint.BottomRight;
                    break;
                }
                break;
            }

            var ts       = new netDxf.Tables.TextStyle(style.TextStyle.FontName, style.TextStyle.FontFile);
            var dxfMText = new MText(
                new Vector3(ToDxfX(x), ToDxfY(y), 0),
                text.Style.TextStyle.FontSize * _targetDpi / _sourceDpi,
                rect.Width,
                ts);

            dxfMText.AttachmentPoint = attachmentPoint;

            var options = new MTextFormattingOptions(dxfMText.Style);
            var fs      = text.Style.TextStyle.FontStyle;

            if (fs != null)
            {
                options.Bold          = fs.Flags.HasFlag(FontStyleFlags.Bold);
                options.Italic        = fs.Flags.HasFlag(FontStyleFlags.Italic);
                options.Underline     = fs.Flags.HasFlag(FontStyleFlags.Underline);
                options.StrikeThrough = fs.Flags.HasFlag(FontStyleFlags.Strikeout);
            }

            options.Aligment = MTextFormattingOptions.TextAligment.Default;
            options.Color    = null;
            dxfMText.Write(tbind, options);

            dxfMText.Layer = _currentLayer;
            dxfMText.Transparency.Value = strokeTansparency;
            dxfMText.Color = stroke;

            dxf.AddEntity(dxfMText);
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="text"></param>
        /// <param name="dx"></param>
        /// <param name="dy"></param>
        /// <param name="db"></param>
        /// <param name="r"></param>
        public void Draw(object doc, Core2D.XText text, double dx, double dy, ImmutableArray <Core2D.ShapeProperty> db, Core2D.Record r)
        {
            var _doc = doc as DxfDocument;

            var tbind = text.BindToTextProperty(db, r);

            if (string.IsNullOrEmpty(tbind))
            {
                return;
            }

            var style             = text.Style;
            var stroke            = GetColor(style.Stroke);
            var strokeTansparency = GetTransparency(style.Stroke);

            var    attachmentPoint = default(MTextAttachmentPoint);
            double x, y;
            var    rect = Core2D.Rect2.Create(text.TopLeft, text.BottomRight, dx, dy);

            switch (text.Style.TextStyle.TextHAlignment)
            {
            default:
            case Core2D.TextHAlignment.Left:
                x = rect.X;
                break;

            case Core2D.TextHAlignment.Center:
                x = rect.X + rect.Width / 2.0;
                break;

            case Core2D.TextHAlignment.Right:
                x = rect.X + rect.Width;
                break;
            }

            switch (text.Style.TextStyle.TextVAlignment)
            {
            default:
            case Core2D.TextVAlignment.Top:
                y = rect.Y;
                break;

            case Core2D.TextVAlignment.Center:
                y = rect.Y + rect.Height / 2.0;
                break;

            case Core2D.TextVAlignment.Bottom:
                y = rect.Y + rect.Height;
                break;
            }

            switch (text.Style.TextStyle.TextVAlignment)
            {
            default:
            case Core2D.TextVAlignment.Top:
                switch (text.Style.TextStyle.TextHAlignment)
                {
                default:
                case Core2D.TextHAlignment.Left:
                    attachmentPoint = MTextAttachmentPoint.TopLeft;
                    break;

                case Core2D.TextHAlignment.Center:
                    attachmentPoint = MTextAttachmentPoint.TopCenter;
                    break;

                case Core2D.TextHAlignment.Right:
                    attachmentPoint = MTextAttachmentPoint.TopRight;
                    break;
                }
                break;

            case Core2D.TextVAlignment.Center:
                switch (text.Style.TextStyle.TextHAlignment)
                {
                default:
                case Core2D.TextHAlignment.Left:
                    attachmentPoint = MTextAttachmentPoint.MiddleLeft;
                    break;

                case Core2D.TextHAlignment.Center:
                    attachmentPoint = MTextAttachmentPoint.MiddleCenter;
                    break;

                case Core2D.TextHAlignment.Right:
                    attachmentPoint = MTextAttachmentPoint.MiddleRight;
                    break;
                }
                break;

            case Core2D.TextVAlignment.Bottom:
                switch (text.Style.TextStyle.TextHAlignment)
                {
                default:
                case Core2D.TextHAlignment.Left:
                    attachmentPoint = MTextAttachmentPoint.BottomLeft;
                    break;

                case Core2D.TextHAlignment.Center:
                    attachmentPoint = MTextAttachmentPoint.BottomCenter;
                    break;

                case Core2D.TextHAlignment.Right:
                    attachmentPoint = MTextAttachmentPoint.BottomRight;
                    break;
                }
                break;
            }

            var ts       = new TextStyle(style.TextStyle.FontName, style.TextStyle.FontFile);
            var dxfMText = new MText(
                new Vector3(ToDxfX(x), ToDxfY(y), 0),
                text.Style.TextStyle.FontSize * 72.0 / 96.0,
                rect.Width,
                ts);

            dxfMText.AttachmentPoint = attachmentPoint;

            var fs      = text.Style.TextStyle.FontStyle;
            var options = new MTextFormattingOptions(dxfMText.Style);

            options.Bold          = fs.Flags.HasFlag(Core2D.FontStyleFlags.Bold);
            options.Italic        = fs.Flags.HasFlag(Core2D.FontStyleFlags.Italic);
            options.Underline     = fs.Flags.HasFlag(Core2D.FontStyleFlags.Underline);
            options.StrikeThrough = fs.Flags.HasFlag(Core2D.FontStyleFlags.Strikeout);

            options.Aligment = MTextFormattingOptions.TextAligment.Default;
            options.Color    = null;
            dxfMText.Write(tbind, options);

            dxfMText.Layer = _currentLayer;
            dxfMText.Transparency.Value = strokeTansparency;
            dxfMText.Color = stroke;

            _doc.AddEntity(dxfMText);
        }