/* GDI+ Programming in C# and VB .NET by Nick Symmonds Publisher: Apress ISBN: 159059035X */ using System; using System.Drawing; using System.Drawing.Text; using System.Drawing.Drawing2D; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace GraphicsProps_c { /// <summary> /// Summary description for GraphicsProps. /// </summary> public class GraphicsProps : System.Windows.Forms.Form { private System.Windows.Forms.Button B0; private System.Windows.Forms.Button B1; /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.Container components = null; public GraphicsProps() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.B0 = new System.Windows.Forms.Button(); this.B1 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // B0 // this.B0.Location = new System.Drawing.Point(16, 240); this.B0.Name = "B0"; this.B0.Size = new System.Drawing.Size(40, 24); this.B0.TabIndex = 0; this.B0.Text = "B0"; this.B0.Click += new System.EventHandler(this.B0_Click); // // B1 // this.B1.Location = new System.Drawing.Point(72, 240); this.B1.Name = "B1"; this.B1.Size = new System.Drawing.Size(40, 24); this.B1.TabIndex = 1; this.B1.Text = "B1"; this.B1.Click += new System.EventHandler(this.B1_Click); // // GraphicsProps // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 273); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.B1, this.B0}); this.Name = "GraphicsProps"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "GraphicsProps"; this.Load += new System.EventHandler(this.GraphicsProps_Load); this.ResumeLayout(false); } #endregion /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.Run(new GraphicsProps()); } private void GraphicsProps_Load(object sender, System.EventArgs e) { } protected override void OnPaint ( PaintEventArgs e ) { Graphics G = e.Graphics; G.Clear(Color.Bisque); //Change one of the Graphics attributes and save state G.SmoothingMode=SmoothingMode.AntiAlias; GraphicsState OldG = G.Save(); //Restore the attribute and draw a line G.SmoothingMode=SmoothingMode.Default; G.DrawLine(new Pen(Color.DarkMagenta, 20), 10, 50, (int)(this.Width - 10), 140); //Restore the old Graphics state and draw another line G.Restore(OldG); G.DrawLine(new Pen(Color.DarkMagenta, 20), 10, 100, (int)(this.Width - 10), 190); G.Dispose(); } private void B0_Click(object sender, System.EventArgs e) { BeginContainerNoArg(this.CreateGraphics()); } private void B1_Click(object sender, System.EventArgs e) { // BeginContainerIntRectArg(this.CreateGraphics()); // World2PageXform(this.CreateGraphics()); RenderText(this.CreateGraphics()); } public void BeginContainerNoArg(Graphics G) { G.Clear(Color.Bisque); //Change one of the attributes of the Graphics object //then save the state. G.SmoothingMode = SmoothingMode.AntiAlias; GraphicsContainer OldG = G.BeginContainer(); //Restore the Smoothing mode state and draw a line G.SmoothingMode = SmoothingMode.Default; G.DrawLine(new Pen(Color.Chocolate, 20), 10, 50, (int)(this.Width - 10), 150); //Restore the old Graphics state and draw another line G.EndContainer(OldG); G.DrawLine(new Pen(Color.Chocolate, 20), 10, 100, (int)(this.Width - 10), 200); G.Dispose(); } public void BeginContainerIntRectArg(Graphics G) { G.Clear(Color.Bisque); // Define transformation for container. Rectangle srcRect = new Rectangle(0, 0, 200, 200); Rectangle destRect = new Rectangle(0, 0, 100, 100); // Begin graphics container. GraphicsContainer containerState = G.BeginContainer(destRect, srcRect, GraphicsUnit.Pixel); G.DrawLine(new Pen(Color.DarkOrchid, 20), 10, 100, 200, 100); G.EndContainer(containerState); G.DrawLine(new Pen(Color.DarkOrchid, 20), 10, 100, 200, 100); G.Dispose(); } public void World2PageXform(Graphics G) { int EndX = 1; int EndY = 1; G.Clear(Color.Azure); G.PageUnit=GraphicsUnit.Inch; G.TranslateTransform(1, 1); G.DrawLine(Pens.Blue, 0, 0, EndX, EndY); int Xpix = EndX * (int)G.DpiX; int Ypix = EndY * (int)G.DpiY; } public void RenderText(Graphics G) { Font F = new Font("Arial", 16); SolidBrush B = new SolidBrush(Color.Black); G.Clear(Color.Azure); G.TextRenderingHint = TextRenderingHint.SingleBitPerPixel; G.DrawString("SingleBitPerPixel", F, B, new PointF(10, 10)); G.TextRenderingHint = TextRenderingHint.AntiAlias; G.DrawString("AntiAlias default Contrast", F, B, new PointF(10, 60)); G.TextContrast = 12; G.DrawString("AntiAlias Low Contrast", F, B, new PointF(10, 90)); G.TextContrast = 1; G.DrawString("AntiAlias High Contrast", F, B, new PointF(10, 120)); } } }