Mega Code Archive

 
Categories / C# / 2D Graphics
 

Blend Alpha

/* GDI+ Programming in C# and VB .NET by Nick Symmonds Publisher: Apress ISBN: 159059035X */ using System; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace Blend_c {      public class Blend : System.Windows.Forms.Form     {     private System.Windows.Forms.HScrollBar AlphaScroll;     private System.Windows.Forms.HScrollBar GammaScroll;     /// <summary>         /// Required designer variable.         /// </summary>         private System.ComponentModel.Container components = null;     private int AlphaFactor = 255;     private float GammaFactor = 1.0f;     private Rectangle R = new Rectangle(40, 20, 100, 100 );     private Image I = Image.FromFile("Colorbars.jpg");     private int ImWidth;     private int ImHeight;     private ImageAttributes Ia = new ImageAttributes();         public Blend()         {             //             // Required for Windows Form Designer support             //             InitializeComponent();       AlphaScroll.Minimum = 20;       AlphaScroll.Maximum = 245;       AlphaScroll.SmallChange = 5;       AlphaScroll.LargeChange = 5;       AlphaScroll.Left = R.Left;       AlphaScroll.Width = R.Width;       AlphaScroll.Top = R.Bottom;       GammaScroll.Minimum=1;       GammaScroll.Maximum = 50;       GammaScroll.SmallChange=1;       GammaScroll.LargeChange=5;       GammaScroll.Left = R.Left;       GammaScroll.Top = R.Top - GammaScroll.Height;       GammaScroll.Width = R.Width;       ImWidth = I.Width;       ImHeight = I.Height;       AlphaScroll.Value = (AlphaScroll.Maximum-AlphaScroll.Minimum )/2;       GammaScroll.Value = (GammaScroll.Maximum-GammaScroll.Minimum )/2;       AlphaFactor = AlphaScroll.Value;       GammaFactor = (float)GammaScroll.Value / 10;     }         protected override void Dispose( bool disposing )         {             if( disposing )             {                 if (components != null)                  {                     components.Dispose();                 }         if ( I != null )           I.Dispose();         if ( Ia != null )           Ia.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.AlphaScroll = new System.Windows.Forms.HScrollBar();       this.GammaScroll = new System.Windows.Forms.HScrollBar();       this.SuspendLayout();       //        // AlphaScroll       //        this.AlphaScroll.Location = new System.Drawing.Point(32, 128);       this.AlphaScroll.Maximum = 255;       this.AlphaScroll.Name = "AlphaScroll";       this.AlphaScroll.Size = new System.Drawing.Size(160, 16);       this.AlphaScroll.TabIndex = 1;       this.AlphaScroll.Scroll += new System.Windows.Forms.ScrollEventHandler(this.AlphaScroll_Scroll);       //        // GammaScroll       //        this.GammaScroll.Location = new System.Drawing.Point(32, 8);       this.GammaScroll.Name = "GammaScroll";       this.GammaScroll.Size = new System.Drawing.Size(160, 16);       this.GammaScroll.TabIndex = 2;       this.GammaScroll.Scroll += new System.Windows.Forms.ScrollEventHandler(this.GammaScroll_Scroll);       //        // Blend       //        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.GammaScroll,                                                                   this.AlphaScroll});       this.Name = "Blend";       this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;       this.Text = "Blend";       this.Load += new System.EventHandler(this.Blend_Load);       this.ResumeLayout(false);     }         #endregion         /// <summary>         /// The main entry point for the application.         /// </summary>         [STAThread]         static void Main()          {             Application.Run(new Blend());         }     private void Blend_Load(object sender, System.EventArgs e)     {     }     protected override void OnPaint(PaintEventArgs e)     {       AlphaBlend(e.Graphics);       base.OnPaint(e);     }     private void AlphaBlend( Graphics G )     {       //AlphaFactor is variable depeneding upon scroll bars       Pen P = new Pen( Color.FromArgb (AlphaFactor, 200, 0, 100 ), 20);       Bitmap bmp = new Bitmap( 120, 120 );       Graphics G2 = Graphics.FromImage(bmp);       Brush B = new SolidBrush(Color.FromArgb( AlphaFactor, 50, 200, 50 ));       try       {         // Set the brightness while rendering image         Ia.SetGamma( GammaFactor );         G.DrawImage(I, R, 0, 0, ImWidth, ImHeight, GraphicsUnit.Pixel, Ia);         //Draw transparent line on top of image         G.DrawLine(P, 10, 100, 200, 100 );         // Draw inside the image contained in memory         G2.FillEllipse( B, 0, 0, 75, 75 );         G.DrawImage( I, new Rectangle(140, 140, 120, 120 ) );         G.CompositingQuality = CompositingQuality.GammaCorrected;         G.CompositingMode = CompositingMode.SourceOver;         G.DrawImage( bmp, new Rectangle( 150, 150, 150, 150 ) );       }       finally       {         if (bmp != null )           bmp.Dispose();         if ( G2 != null )           G2.Dispose();         if ( B != null )           B.Dispose();         if ( P != null )           P.Dispose();       }     }     private void AlphaScroll_Scroll(object sender,                                      System.Windows.Forms.ScrollEventArgs e)     {       AlphaFactor = AlphaScroll.Value;       this.Refresh();     }     private void GammaScroll_Scroll(object sender,                                      System.Windows.Forms.ScrollEventArgs e)     {       GammaFactor = (float)GammaScroll.Value / 10;       this.Refresh();     }     } }                     Blend-c.zip( 5 k)