private void DataGridViewModelPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            if (e.PropertyName == "FontPreview" || e.PropertyName == "AddingColumnName" || e.PropertyName == "RemovingColumnName")
            {
                return;
            }
            LabelPrinterLayer labelPrinterLayer = GetLabelPrinterLayer();

            using (Bitmap bitmap = new Bitmap(311, 60))
            {
                PlatformGeoCanvas canvas = new PlatformGeoCanvas();
                canvas.BeginDrawing(bitmap, new RectangleShape(-180, 90, 180, -90), GeographyUnit.Meter);

                labelPrinterLayer.SafeProcess(() =>
                {
                    labelPrinterLayer.Draw(canvas, new System.Collections.ObjectModel.Collection <SimpleCandidate>());
                });

                canvas.EndDrawing();
                MemoryStream ms = new MemoryStream();
                bitmap.Save(ms, ImageFormat.Png);
                BitmapImage bitmapImage = new BitmapImage();
                bitmapImage.BeginInit();
                bitmapImage.StreamSource = ms;
                bitmapImage.EndInit();
                FontPreview = bitmapImage;
            }
        }
        private void TextElementEntity_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            if (withPreview && e.PropertyName != "Preview" && !string.IsNullOrEmpty(text.Trim()))
            {
                LabelPrinterLayer labelPrinterLayer = new LabelPrinterLayer();
                labelPrinterLayer.LoadFromViewModel(this);
                using (Bitmap bitmap = new Bitmap(250, 100))
                {
                    PlatformGeoCanvas canvas = new PlatformGeoCanvas();
                    canvas.BeginDrawing(bitmap, new RectangleShape(-180, 90, 180, -90), GeographyUnit.Meter);

                    labelPrinterLayer.SafeProcess(() =>
                    {
                        labelPrinterLayer.Draw(canvas, new Collection <SimpleCandidate>());
                    });

                    //labelPrinterLayer.Open();
                    //labelPrinterLayer.Draw(canvas, new System.Collections.ObjectModel.Collection<SimpleCandidate>());
                    //labelPrinterLayer.Close();
                    canvas.EndDrawing();
                    MemoryStream ms = new MemoryStream();
                    bitmap.Save(ms, ImageFormat.Png);
                    BitmapImage bitmapImage = new BitmapImage();
                    bitmapImage.BeginInit();
                    bitmapImage.StreamSource = ms;
                    bitmapImage.EndInit();
                    preview = bitmapImage;
                    RaisePropertyChanged(() => Preview);
                }
            }
        }
예제 #3
0
        public static void LoadFromViewModel(this LabelPrinterLayer labelPrinterLayer, TextElementViewModel textElementViewModel)
        {
            DrawingFontStyles drawingFontStyles = DrawingFontStyles.Regular;

            if (textElementViewModel.IsBold)
            {
                drawingFontStyles = drawingFontStyles | DrawingFontStyles.Bold;
            }
            if (textElementViewModel.IsItalic)
            {
                drawingFontStyles = drawingFontStyles | DrawingFontStyles.Italic;
            }
            if (textElementViewModel.IsStrikeout)
            {
                drawingFontStyles = drawingFontStyles | DrawingFontStyles.Strikeout;
            }
            if (textElementViewModel.IsUnderline)
            {
                drawingFontStyles = drawingFontStyles | DrawingFontStyles.Underline;
            }

            GeoFont font = new GeoFont(textElementViewModel.FontName.Source, textElementViewModel.FontSize, drawingFontStyles);

            labelPrinterLayer.PrinterWrapMode = textElementViewModel.WrapText ? PrinterWrapMode.WrapText : PrinterWrapMode.AutoSizeText;
            labelPrinterLayer.Text            = textElementViewModel.Text;
            labelPrinterLayer.Font            = font;
            labelPrinterLayer.TextBrush       = textElementViewModel.FontColor;
            labelPrinterLayer.DragMode        = textElementViewModel.DragMode;
            labelPrinterLayer.ResizeMode      = textElementViewModel.ResizeMode;
        }
        private LabelPrinterLayer GetLabelPrinterLayer()
        {
            DrawingFontStyles drawingFontStyles = DrawingFontStyles.Regular;

            if (IsBold)
            {
                drawingFontStyles = drawingFontStyles | DrawingFontStyles.Bold;
            }
            if (IsItalic)
            {
                drawingFontStyles = drawingFontStyles | DrawingFontStyles.Italic;
            }
            if (IsStrikeout)
            {
                drawingFontStyles = drawingFontStyles | DrawingFontStyles.Strikeout;
            }
            if (IsUnderline)
            {
                drawingFontStyles = drawingFontStyles | DrawingFontStyles.Underline;
            }

            GeoFont           font = new GeoFont(FontName.Source, FontSize, drawingFontStyles);
            LabelPrinterLayer labelPrinterLayer = new LabelPrinterLayer("Abc", font, FontColor);

            return(labelPrinterLayer);
        }
예제 #5
0
        private void toolBoxItem_Click(object sender, RoutedEventArgs e)
        {
            PrinterInteractiveOverlay printerInteractiveOverlay = (PrinterInteractiveOverlay)Map1.InteractiveOverlays["PrintPreviewOverlay"];
            PrinterLayer printerLayer = null;

            if (sender == btnAddLabel)
            {
                printerLayer = new LabelPrinterLayer();
                printerLayer.SetPosition(2, 1, 0, 0, PrintingUnit.Inch);
            }
            else if (sender == btnAddImage)
            {
                printerLayer = new ImagePrinterLayer();
            }
            else if (sender == btnAddScaleLine)
            {
                MessageBox.Show("NotImplemented");
            }
            else if (sender == btnAddScaleBar)
            {
                MessageBox.Show("NotImplemented");
            }
            else if (sender == btnAddDataGrid)
            {
                printerLayer = new DataGridPrinterLayer();
                printerLayer.SetPosition(1, 1, 0, 0, PrintingUnit.Inch);
            }

            //if (ShowPrinterLayerProperties(printerLayer) == DialogResult.OK)
            if (ShowPrinterLayerProperties(printerLayer) == true)
            {
                printerInteractiveOverlay.PrinterLayers.Add(printerLayer);
                Map1.Refresh();
            }
        }
예제 #6
0
        protected override void LoadFromActiveMapCore(PrinterLayer printerLayer)
        {
            LabelPrinterLayer labelPrinterLayer = null;

            if (titleAdornmentLayer != null && (labelPrinterLayer = printerLayer as LabelPrinterLayer) != null)
            {
                labelPrinterLayer.Text      = titleAdornmentLayer.Title;
                labelPrinterLayer.TextBrush = titleAdornmentLayer.FontColor;
                labelPrinterLayer.Font      = titleAdornmentLayer.TitleFont;
            }
        }
예제 #7
0
        public static LabelPrinterLayer GetLabelPrinterLayer(string text, double width, double height, double centerX, double centerY)
        {
            LabelPrinterLayer labelPrinterLayer = new LabelPrinterLayer {
                DrawingExceptionMode = DrawingExceptionMode.DrawException
            };

            labelPrinterLayer.LoadFromViewModel(new TextElementViewModel(false)
            {
                Text = text, FontSize = 34
            });
            labelPrinterLayer.Open();
            labelPrinterLayer.SetPosition(width, height, centerX, centerY, PrintingUnit.Inch);
            return(labelPrinterLayer);
        }
        private void AddCenteredMapTitles()
        {
            RectangleShape pageBoundingbox = GetPageBoundingBox(PrintingUnit.Inch);

            //For the main title
            LabelPrinterLayer titleLabelPrinterLayer = new LabelPrinterLayer();

            //Setup the text and the font..
            titleLabelPrinterLayer.Text      = "Tarrant County Parcels";
            titleLabelPrinterLayer.Font      = new GeoFont("Verdana", 8);
            titleLabelPrinterLayer.TextBrush = new GeoSolidBrush(GeoColors.Black);

            // Set the title position so that is it centered on the page.
            PointShape titleCenterPointShape = new PointShape();

            titleCenterPointShape.X = pageBoundingbox.UpperRightPoint.X - pageBoundingbox.Width / 2;
            titleCenterPointShape.Y = pageBoundingbox.UpperLeftPoint.Y - 0.3;
            titleLabelPrinterLayer.PrinterWrapMode = PrinterWrapMode.AutoSizeText;
            titleLabelPrinterLayer.SetPosition(3, 0.5, titleCenterPointShape, PrintingUnit.Inch);

            //For the subtitle
            LabelPrinterLayer subTitleLabelPrinterLayer = new LabelPrinterLayer();

            //Setup the text and the font..
            subTitleLabelPrinterLayer.Text      = "Affected Parcels By New Proposal";
            subTitleLabelPrinterLayer.Font      = new GeoFont("Arial", 2, DrawingFontStyles.Bold);
            subTitleLabelPrinterLayer.TextBrush = new GeoSolidBrush(GeoColors.Black);

            // Set the sub title position so that is it centered on the page below the title.
            PointShape subtitleCenterPointShape = new PointShape();

            subtitleCenterPointShape.X = pageBoundingbox.UpperRightPoint.X - pageBoundingbox.Width / 2;
            subtitleCenterPointShape.Y = pageBoundingbox.UpperLeftPoint.Y - 0.6;
            subTitleLabelPrinterLayer.PrinterWrapMode = PrinterWrapMode.AutoSizeText;
            subTitleLabelPrinterLayer.SetPosition(3, 0.3, subtitleCenterPointShape, PrintingUnit.Inch);

            // Find the PrinterInteractiveOverlay so we can add the new LabelPrinterLayer
            PrinterInteractiveOverlay printerInteractiveOverlay = (PrinterInteractiveOverlay)mapView.InteractiveOverlays["PrintPreviewOverlay"];

            printerInteractiveOverlay.PrinterLayers.Add("titleLabelPrinterLayer", titleLabelPrinterLayer);
            printerInteractiveOverlay.PrinterLayers.Add("subtitleLabelPrinterLayer", subTitleLabelPrinterLayer);
        }
예제 #9
0
        internal void SetProperties(PrinterLayer printerLayer)
        {
            LabelPrinterLayer labelPrinterLayer = printerLayer as LabelPrinterLayer;

            if (labelPrinterLayer != null)
            {
                textViewModel.WrapText    = labelPrinterLayer.PrinterWrapMode == PrinterWrapMode.WrapText;
                textViewModel.Text        = labelPrinterLayer.Text;
                textViewModel.FontName    = new FontFamily(labelPrinterLayer.Font.FontName);
                textViewModel.FontSize    = labelPrinterLayer.Font.Size;
                textViewModel.IsBold      = (labelPrinterLayer.Font.Style & DrawingFontStyles.Bold) == DrawingFontStyles.Bold;
                textViewModel.IsItalic    = (labelPrinterLayer.Font.Style & DrawingFontStyles.Italic) == DrawingFontStyles.Italic;
                textViewModel.IsStrikeout = (labelPrinterLayer.Font.Style & DrawingFontStyles.Strikeout) == DrawingFontStyles.Strikeout;
                textViewModel.IsUnderline = (labelPrinterLayer.Font.Style & DrawingFontStyles.Underline) == DrawingFontStyles.Underline;
                textViewModel.FontColor   = labelPrinterLayer.TextBrush;

                textViewModel.DragMode   = labelPrinterLayer.DragMode;
                textViewModel.ResizeMode = labelPrinterLayer.ResizeMode;
            }
        }
예제 #10
0
        private void AddGridTitle2()
        {
            //Set the grid tile for approved parcels on top of the right grid.
            RectangleShape pageBoundingbox = GetPageBoundingBox(PrintingUnit.Inch);
            //For the grid title
            LabelPrinterLayer gridTitleLabelPrinterLayer = new LabelPrinterLayer();

            //Setup the text and the font..
            gridTitleLabelPrinterLayer.Text      = "Parcels In Discussion";
            gridTitleLabelPrinterLayer.Font      = new GeoFont("Arial", 8, DrawingFontStyles.Bold);
            gridTitleLabelPrinterLayer.TextBrush = new GeoSolidBrush(GeoColors.Black);

            // Set the title position so that is it centered on the page one inch from the top and to the right
            gridTitleLabelPrinterLayer.PrinterWrapMode = PrinterWrapMode.AutoSizeText;
            gridTitleLabelPrinterLayer.SetPosition(3, 0.5, new PointShape(2.25, pageBoundingbox.GetCenterPoint().Y - 2.9), PrintingUnit.Inch);

            // Find the PrinterInteractiveOverlay so we can add the new LabelPrinterLayer
            PrinterInteractiveOverlay printerInteractiveOverlay = (PrinterInteractiveOverlay)mapView.InteractiveOverlays["PrintPreviewOverlay"];

            printerInteractiveOverlay.PrinterLayers.Add("gridtitle2LabelPrinterLayer", gridTitleLabelPrinterLayer);
        }
예제 #11
0
        protected override PrinterLayer GetPrinterLayerFromActiveMapCore(RectangleShape boudingBox)
        {
            if (this.titleAdornmentLayer != null)
            {
                LabelPrinterLayer printerLayer = new LabelPrinterLayer();
                LoadFromActiveMap(printerLayer);
                var newScreenBBox = new PlatformGeoCanvas().MeasureText(printerLayer.Text, printerLayer.Font);
                var scaledWidth   = newScreenBBox.Width * 1.1;
                var scaledHeight  = newScreenBBox.Height * 1.1;

                double width  = PrinterHelper.ConvertLength(scaledWidth, PrintingUnit.Point, PrintingUnit.Inch);
                double height = PrinterHelper.ConvertLength(scaledHeight, PrintingUnit.Point, PrintingUnit.Inch);
                double left   = PrinterHelper.ConvertLength(titleAdornmentLayer.XOffsetInPixel, PrintingUnit.Point, PrintingUnit.Inch);
                double top    = PrinterHelper.ConvertLength(titleAdornmentLayer.YOffsetInPixel, PrintingUnit.Point, PrintingUnit.Inch);
                SetPosition(titleAdornmentLayer.Location, boudingBox, printerLayer, width, height, left, top);
                return(printerLayer);
            }
            else
            {
                return(null);
            }
        }
예제 #12
0
        private void AddCenteredTitleLabel()
        {
            LabelPrinterLayer labelPrinterLayer = new LabelPrinterLayer();

            //Setup the text and the font..
            labelPrinterLayer.Text      = "Population > 70 Million";
            labelPrinterLayer.Font      = new GeoFont("Arial", 10, DrawingFontStyles.Bold);
            labelPrinterLayer.TextBrush = new GeoSolidBrush(GeoColors.Black);

            // Set the labels position so that is it centered on the page one inch from the top
            RectangleShape pageBoundingbox = GetPageBoundingBox(PrintingUnit.Inch);
            PointShape     labelCenter     = new PointShape();

            labelCenter.X = pageBoundingbox.UpperRightPoint.X - pageBoundingbox.Width / 2;
            labelCenter.Y = pageBoundingbox.UpperLeftPoint.Y - .5;

            labelPrinterLayer.PrinterWrapMode = PrinterWrapMode.AutoSizeText;
            labelPrinterLayer.SetPosition(5, 1, labelCenter, PrintingUnit.Inch);

            // Find the PrinterInteractiveOverlay so we can add the new LabelPrinterLayer
            PrinterInteractiveOverlay printerInteractiveOverlay = (PrinterInteractiveOverlay)Map1.InteractiveOverlays["PrintPreviewOverlay"];

            printerInteractiveOverlay.PrinterLayers.Add("LabelLayer", labelPrinterLayer);
        }
예제 #13
0
        public LabelPrinterLayerProperty(LabelPrinterLayer labelPrinterLayer)
        {
            InitializeComponent();

            this.labelPrinterLayer = labelPrinterLayer;
        }
 public SignatureViewModel(string name, LabelPrinterLayer signaturePrinterLayer)
 {
     this.name = name;
     this.signaturePrinterLayer = signaturePrinterLayer;
 }