Ejemplo n.º 1
0
        Control MetricsPreview()
        {
            metricsPreview = new Drawable {
                Size = new Size(200, 100)
            };
            metricsPreview.Paint += (sender, pe) => {
                var size  = pe.Graphics.MeasureString(selectedFont, preview.Text);
                var scale = this.ParentWindow.Screen.Scale;

                var ypos = Math.Max(0, (selectedFont.Ascent * scale) - size.Height);
                ypos += Math.Max(0, (metricsPreview.Size.Height - (selectedFont.LineHeight * scale)) / 2);

                var baseline = ypos + (selectedFont.Baseline * scale);
                pe.Graphics.DrawLine(Pens.Black(), 0, baseline, 200, baseline);

                pe.Graphics.DrawText(selectedFont, Colors.Black, 0, ypos, preview.Text);

                var ascender = baseline - selectedFont.Ascent * scale;
                pe.Graphics.DrawLine(Pens.Blue(), 0, ascender, 200, ascender);

                var descender = baseline + selectedFont.Descent * scale;
                pe.Graphics.DrawLine(Pens.Red(), 0, descender, 200, descender);

                var xheight = baseline - selectedFont.XHeight * scale;
                pe.Graphics.DrawLine(Pens.Green(), 0, xheight, 200, xheight);

                var lineheight = ypos + selectedFont.LineHeight * scale;
                pe.Graphics.DrawLine(Pens.Orange(), 0, lineheight, 200, lineheight);
            };
            return(metricsPreview);
        }
Ejemplo n.º 2
0
		Control CreateCustom32Alpha()
		{
			var image = new Bitmap(100, 100, PixelFormat.Format32bppRgba);

			// should always ensure .Dispose() is called when you are done with a Graphics object
			using (var graphics = new Graphics(image))
			{
				graphics.DrawLine(Pens.Blue(), Point.Empty, new Point(image.Size));
				graphics.DrawRectangle(Pens.Black(), new Rectangle(image.Size - 1));
			}
			return new DrawableImageView { Image = image };
		}
Ejemplo n.º 3
0
        PrintDocument GetPrintDocument()
        {
            var document = new PrintDocument();

            document.PrintSettings = settings;
            var font      = Fonts.Serif(16);
            var printTime = DateTime.Now;

            document.PrintPage += (sender, e) => {
                Size pageSize = Size.Round(e.PageSize);

                // draw a border around the printable area
                var rect = new Rectangle(pageSize);
                rect.Inflate(-1, -1);
                e.Graphics.DrawRectangle(Pens.Silver(), rect);

                // draw title
                e.Graphics.DrawText(font, Colors.Black, new Point(50, 20), document.Name);

                // draw page number
                var text     = string.Format("page {0} of {1}", e.CurrentPage + 1, document.PageCount);
                var textSize = Size.Round(e.Graphics.MeasureString(font, text));
                e.Graphics.DrawText(font, Colors.Black, new Point(pageSize.Width - textSize.Width - 50, 20), text);

                // draw date
                text     = string.Format("Printed on {0:f}", printTime);
                textSize = Size.Round(e.Graphics.MeasureString(font, text));
                e.Graphics.DrawText(font, Colors.Black, new Point(pageSize.Width - textSize.Width - 50, pageSize.Height - textSize.Height - 20), text);

                // draw some rectangles
                switch (e.CurrentPage)
                {
                case 0:
                    e.Graphics.DrawRectangle(Pens.Blue(), new Rectangle(50, 50, 100, 100));
                    e.Graphics.DrawRectangle(Pens.Green(), new Rectangle(new Point(pageSize) - new Size(150, 150), new Size(100, 100)));
                    break;

                case 1:
                    e.Graphics.DrawRectangle(Pens.Blue(), new Rectangle(pageSize.Width - 150, 50, 100, 100));
                    e.Graphics.DrawRectangle(Pens.Green(), new Rectangle(50, pageSize.Height - 150, 100, 100));
                    break;
                }
            };
            document.Name      = "Name Of Document";
            document.PageCount = 2;
            return(document);
        }
Ejemplo n.º 4
0
        Control MetricsPreview()
        {
            metricsPreview = new Drawable {
                Size = new Size(200, 100)
            };
            metricsPreview.Paint += (sender, pe) =>
            {
                var width = metricsPreview.Size.Width;
                pe.Graphics.PixelOffsetMode = PixelOffsetMode.Half;

                pe.Graphics.DrawRectangle(Colors.Black, new RectangleF(metricsPreview.Size));

                var size  = pe.Graphics.MeasureString(selectedFont, preview.Text);
                var scale = ParentWindow.Screen.Scale;

                var ypos = Math.Max(0, (metricsPreview.Size.Height - size.Height) / 2);

                pe.Graphics.FillRectangle(Brushes.GhostWhite(), new RectangleF(new PointF(0, ypos), size));

                pe.Graphics.DrawText(selectedFont, Colors.Black, 0, ypos, preview.Text);

                var baseline = ypos + selectedFont.Baseline * scale;
                pe.Graphics.DrawLine(Pens.Black(), 0, baseline, width, baseline);

                var ascender = baseline - selectedFont.Ascent * scale;
                pe.Graphics.DrawLine(Pens.Blue(), 0, ascender, width, ascender);

                var descender = baseline + selectedFont.Descent * scale;
                pe.Graphics.DrawLine(Pens.Red(), 0, descender, width, descender);

                var xheight = baseline - selectedFont.XHeight * scale;
                pe.Graphics.DrawLine(Pens.Green(), 0, xheight, width, xheight);

                var lineheight = ypos + selectedFont.LineHeight * scale;
                pe.Graphics.DrawLine(Pens.Orange(), 0, lineheight, width, lineheight);
            };
            return(metricsPreview);
        }