Csharp/C Sharp/2D Graphics/PathGradientBrush
Содержание
CenterColor
<source lang="csharp"> using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Text; using System.Windows.Forms; public class Form1 : Form {
protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; GraphicsPath gp = new GraphicsPath(); gp.AddLine(10, 10, 110, 15); gp.AddLine(110, 15, 100, 96); gp.AddLine(100, 96, 15, 110); gp.CloseFigure(); g.FillRectangle(Brushes.White, this.ClientRectangle); g.SmoothingMode = SmoothingMode.AntiAlias; PathGradientBrush pgb = new PathGradientBrush(gp); pgb.CenterColor = Color.White; pgb.SurroundColors = new Color[] { Color.Blue }; g.FillPath(pgb, gp); g.DrawPath(Pens.Black, gp); pgb.Dispose(); gp.Dispose(); } public static void Main() { Application.Run(new Form1()); }
}
</source>
Gradient Brush Ball
<source lang="csharp"> using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; class BouncingGradientBrushBall : Form {
public static void Main() { Application.Run(new BouncingGradientBrushBall()); } public BouncingGradientBrushBall() { ResizeRedraw = true; } protected override void OnPaint(PaintEventArgs pea) { GraphicsPath path = new GraphicsPath(); Rectangle rect = new Rectangle(10, 10, 30, 30); path.AddEllipse(rect); PathGradientBrush pgbrush = new PathGradientBrush(path); pgbrush.CenterPoint = new PointF((rect.Left + rect.Right) / 3, (rect.Top + rect.Bottom) / 3); pgbrush.CenterColor = Color.White; pgbrush.SurroundColors = new Color[] { Color.Red }; pea.Graphics.FillRectangle(pgbrush, rect); }
}
</source>
Square Tile
<source lang="csharp"> using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms;
class SquareTile: Form {
const int iSide = 50; // Side of square public static void Main() { Application.Run(new SquareTile()); } public SquareTile() { ResizeRedraw = true; } protected override void OnPaint(PaintEventArgs pea) { DoPage(pea.Graphics, ForeColor,ClientSize.Width, ClientSize.Height); } protected void DoPage(Graphics grfx, Color clr, int cx, int cy) { Point[] apt = {new Point(0, 0), new Point(iSide, 0), new Point(iSide, iSide), new Point(0, iSide)}; PathGradientBrush pgbrush = new PathGradientBrush(apt, WrapMode.TileFlipXY); pgbrush.SurroundColors = new Color[] { Color.Red, Color.Lime, Color.Blue, Color.White}; grfx.FillRectangle(pgbrush, 0, 0, cx, cy); }
}
</source>
Star Gradient Brush
<source lang="csharp"> using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms;
class StarGradientBrush: Form {
public static void Main() { Application.Run(new StarGradientBrush()); } public StarGradientBrush() { ResizeRedraw = true; } protected override void OnPaint(PaintEventArgs pea) { DoPage(pea.Graphics, ForeColor,ClientSize.Width, ClientSize.Height); } protected void DoPage(Graphics grfx, Color clr, int cx, int cy) { Point[] apt = new Point[5]; for (int i = 0; i < apt.Length; i++) { double dAngle = (i * 0.8 - 0.5) * Math.PI; apt[i] = new Point( (int)(cx * (0.50 + 0.48 * Math.Cos(dAngle))), (int)(cy * (0.50 + 0.48 * Math.Sin(dAngle)))); } PathGradientBrush pgbrush = new PathGradientBrush(apt); pgbrush.CenterColor = Color.White; pgbrush.SurroundColors = new Color[1] { Color.Black }; grfx.FillRectangle(pgbrush, 0, 0, cx, cy); }
}
</source>
Triangle Gradient Brush
<source lang="csharp">
using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms;
class TriangleGradientBrush: Form {
public static void Main() { Application.Run(new TriangleGradientBrush()); } public TriangleGradientBrush() { ResizeRedraw = true; } protected override void OnPaint(PaintEventArgs pea) { DoPage(pea.Graphics, ForeColor,ClientSize.Width, ClientSize.Height); } protected void DoPage(Graphics grfx, Color clr, int cx, int cy) { Point[] apt = { new Point(cx, 0), new Point(cx, cy), new Point(0, cy) }; PathGradientBrush pgbrush = new PathGradientBrush(apt); grfx.FillRectangle(pgbrush, 0, 0, cx, cy); }
}
</source>
Triangle Tile
<source lang="csharp"> using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms;
class TriangleTile: Form {
const int iSide = 50; // Side of square for triangle MenuItem miChecked; public static void Main() { Application.Run(new TriangleTile()); } public TriangleTile() { ResizeRedraw = true; Menu = new MainMenu(); Menu.MenuItems.Add("&Wrap-Mode"); foreach (WrapMode wm in Enum.GetValues(typeof(WrapMode))) { MenuItem mi = new MenuItem(); mi.Text = wm.ToString(); mi.Click += new EventHandler(MenuWrapModeOnClick); Menu.MenuItems[0].MenuItems.Add(mi); } miChecked = Menu.MenuItems[0].MenuItems[0]; miChecked.Checked = true; } void MenuWrapModeOnClick(object obj, EventArgs ea) { miChecked.Checked = false; miChecked = (MenuItem) obj; miChecked.Checked = true; Invalidate(); } protected override void OnPaint(PaintEventArgs pea) { DoPage(pea.Graphics, ForeColor,ClientSize.Width, ClientSize.Height); } protected void DoPage(Graphics grfx, Color clr, int cx, int cy) { Point[] apt = { new Point(0, 0), new Point(iSide, 0), new Point(0, iSide)}; PathGradientBrush pgbrush = new PathGradientBrush(apt, (WrapMode) miChecked.Index); grfx.FillRectangle(pgbrush, 0, 0, cx, cy); }
}
</source>
Two-Triangle Tile
<source lang="csharp"> using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; class TwoTriangleTile : Form {
const int iSide = 50; // Side of square for triangle public static void Main() { Application.Run(new TwoTriangleTile()); } public TwoTriangleTile() { ResizeRedraw = true; } protected override void OnPaint(PaintEventArgs pea) { DoPage(pea.Graphics, ForeColor, ClientSize.Width, ClientSize.Height); } protected void DoPage(Graphics grfx, Color clr, int cx, int cy) { Point[] apt = { new Point(0, 0), new Point(iSide, 0), new Point(0, iSide) }; PathGradientBrush pgbrush1 = new PathGradientBrush(apt, WrapMode.TileFlipXY); apt = new Point[] {new Point(iSide, 0), new Point(iSide, iSide), new Point(0, iSide)}; PathGradientBrush pgbrush2 = new PathGradientBrush(apt, WrapMode.TileFlipXY); grfx.FillRectangle(pgbrush1, 0, 0, cx, cy); grfx.FillRectangle(pgbrush2, 0, 0, cx, cy); }
}
</source>