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
        Control Default()
        {
            var control = new Drawable
            {
                Size = new Size(50, 50)
            };

            control.Paint += delegate(object sender, PaintEventArgs pe)
            {
                pe.Graphics.DrawLine(Pens.Black(), Point.Empty, new Point(control.Size));
            };
            LogEvents(control);

            return(control);
        }
Ejemplo n.º 4
0
        Control WithBackground()
        {
            var control = new Drawable
            {
                Size            = new Size(50, 50),
                BackgroundColor = Colors.Lime
            };

            control.Paint += delegate(object sender, PaintEventArgs pe)
            {
                pe.Graphics.DrawLine(Pens.Black(), Point.Empty, new Point(control.Size));
            };
            LogEvents(control);

            return(control);
        }
Ejemplo n.º 5
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);
        }
Ejemplo n.º 6
0
            public Box(Size canvasSize, bool useTexturesAndGradients, DirectDrawingRenderer renderer)
            {
                this.renderer = renderer;
                var size     = new SizeF(random.Next(50) + 50, random.Next(50) + 50);
                var location = new PointF(random.Next(canvasSize.Width - (int)size.Width), random.Next(canvasSize.Height - (int)size.Height));

                position  = new RectangleF(location, size);
                increment = new SizeF(random.Next(3) + 1, random.Next(3) + 1);
                if (random.Next(2) == 1)
                {
                    increment.Width = -increment.Width;
                }
                if (random.Next(2) == 1)
                {
                    increment.Height = -increment.Height;
                }

                angle    = random.Next(360);
                rotation = (random.Next(20) - 10f) / 4f;

                var rect = new RectangleF(size);

                color = GetRandomColor(random);
                var colorPen   = new Pen(color, generator: renderer.Generator);
                var blackPen   = Pens.Black(renderer.Generator);
                var blackBrush = Brushes.Black(renderer.Generator);

                switch (random.Next(useTexturesAndGradients ? 4 : 2))
                {
                case 0:
                    draw  = g => g.DrawRectangle(colorPen, rect);
                    erase = g => g.DrawRectangle(blackPen, rect);
                    break;

                case 1:
                    draw  = g => g.DrawEllipse(colorPen, rect);
                    erase = g => g.DrawEllipse(blackPen, rect);
                    break;

                case 2:
                    switch (random.Next(2))
                    {
                    case 0:
                        fillBrush = new LinearGradientBrush(GetRandomColor(random), GetRandomColor(random), PointF.Empty, new PointF(size.Width, size.Height), renderer.Generator);
                        break;

                    case 1:
                        fillBrush = new TextureBrush(renderer.texture, 1f, renderer.Generator)
                        {
                            Transform = Matrix.FromScale(size / 80, renderer.Generator)
                        };
                        break;
                    }
                    draw  = g => g.FillEllipse(fillBrush, rect);
                    erase = g => g.FillEllipse(blackBrush, rect);
                    break;

                case 3:
                    switch (random.Next(2))
                    {
                    case 0:
                        fillBrush = new LinearGradientBrush(GetRandomColor(random), GetRandomColor(random), PointF.Empty, new PointF(size.Width, size.Height), renderer.Generator);
                        break;

                    case 1:
                        fillBrush = new TextureBrush(renderer.texture, 1f, renderer.Generator)
                        {
                            Transform = Matrix.FromScale(size / 80, renderer.Generator)
                        };
                        break;
                    }
                    draw  = g => g.FillRectangle(fillBrush, rect);
                    erase = g => g.FillRectangle(blackBrush, rect);
                    break;
                }
            }