Image Class
/*
GDI+ Programming in C# and VB .NET
by Nick Symmonds
Publisher: Apress
ISBN: 159059035X
*/
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace ImageClass
{
/// <summary>
/// Summary description for ImageClass.
/// </summary>
public class ImageClass : System.Windows.Forms.Form
{
private System.Windows.Forms.OpenFileDialog ofdBitmap;
private System.Windows.Forms.Button cmdOpen;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label lblHT;
private System.Windows.Forms.Label lblWidth;
private System.Windows.Forms.Label lblHdpi;
private System.Windows.Forms.Label lblVdpi;
private System.Windows.Forms.Label lblFormat;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label lblSize;
private System.Windows.Forms.Label lblDIM;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Button cmdSetRes;
#region Class local variables
Bitmap Bmp;
RectangleF BMPContainer;
#endregion
public ImageClass()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
ofdBitmap.Filter= "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF";
ofdBitmap.InitialDirectory = "";
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
if (Bmp != null)
Bmp.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.ofdBitmap = new System.Windows.Forms.OpenFileDialog();
this.cmdOpen = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.lblHT = new System.Windows.Forms.Label();
this.lblWidth = new System.Windows.Forms.Label();
this.lblHdpi = new System.Windows.Forms.Label();
this.lblVdpi = new System.Windows.Forms.Label();
this.lblFormat = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.lblSize = new System.Windows.Forms.Label();
this.lblDIM = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.cmdSetRes = new System.Windows.Forms.Button();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// ofdBitmap
//
this.ofdBitmap.FileOk += new System.ComponentModel.CancelEventHandler(this.OpenFile);
//
// cmdOpen
//
this.cmdOpen.Location = new System.Drawing.Point(16, 320);
this.cmdOpen.Name = "cmdOpen";
this.cmdOpen.Size = new System.Drawing.Size(72, 32);
this.cmdOpen.TabIndex = 0;
this.cmdOpen.Text = "Open";
this.cmdOpen.Click += new System.EventHandler(this.Open);
//
// groupBox1
//
this.groupBox1.Controls.AddRange(new System.Windows.Forms.Control[] {
this.lblDIM,
this.label8,
this.lblSize,
this.label6,
this.lblFormat,
this.lblVdpi,
this.lblHdpi,
this.lblWidth,
this.lblHT,
this.label5,
this.label4,
this.label3,
this.label2,
this.label1});
this.groupBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.groupBox1.Location = new System.Drawing.Point(144, 80);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(224, 224);
this.groupBox1.TabIndex = 2;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Attributes";
//
// label1
//
this.label1.Location = new System.Drawing.Point(8, 24);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(64, 16);
this.label1.TabIndex = 0;
this.label1.Text = "Height";
//
// label2
//
this.label2.Location = new System.Drawing.Point(8, 72);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(64, 16);
this.label2.TabIndex = 1;
this.label2.Text = "Hdpi";
//
// label3
//
this.label3.Location = new System.Drawing.Point(8, 48);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(64, 16);
this.label3.TabIndex = 2;
this.label3.Text = "Width";
//
// label4
//
this.label4.Location = new System.Drawing.Point(8, 96);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(64, 16);
this.label4.TabIndex = 3;
this.label4.Text = "Vdpi";
//
// label5
//
this.label5.Location = new System.Drawing.Point(8, 120);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(64, 16);
this.label5.TabIndex = 4;
this.label5.Text = "Format";
//
// lblHT
//
this.lblHT.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.lblHT.Location = new System.Drawing.Point(80, 24);
this.lblHT.Name = "lblHT";
this.lblHT.Size = new System.Drawing.Size(136, 16);
this.lblHT.TabIndex = 5;
//
// lblWidth
//
this.lblWidth.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.lblWidth.Location = new System.Drawing.Point(80, 48);
this.lblWidth.Name = "lblWidth";
this.lblWidth.Size = new System.Drawing.Size(136, 16);
this.lblWidth.TabIndex = 6;
//
// lblHdpi
//
this.lblHdpi.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.lblHdpi.Location = new System.Drawing.Point(80, 72);
this.lblHdpi.Name = "lblHdpi";
this.lblHdpi.Size = new System.Drawing.Size(136, 16);
this.lblHdpi.TabIndex = 7;
//
// lblVdpi
//
this.lblVdpi.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.lblVdpi.Location = new System.Drawing.Point(80, 96);
this.lblVdpi.Name = "lblVdpi";
this.lblVdpi.Size = new System.Drawing.Size(136, 16);
this.lblVdpi.TabIndex = 8;
//
// lblFormat
//
this.lblFormat.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.lblFormat.Location = new System.Drawing.Point(80, 120);
this.lblFormat.Name = "lblFormat";
this.lblFormat.Size = new System.Drawing.Size(136, 16);
this.lblFormat.TabIndex = 9;
//
// label6
//
this.label6.Location = new System.Drawing.Point(8, 160);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(64, 16);
this.label6.TabIndex = 10;
this.label6.Text = "Size";
//
// lblSize
//
this.lblSize.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.lblSize.Location = new System.Drawing.Point(80, 160);
this.lblSize.Name = "lblSize";
this.lblSize.Size = new System.Drawing.Size(136, 16);
this.lblSize.TabIndex = 11;
//
// lblDIM
//
this.lblDIM.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.lblDIM.Location = new System.Drawing.Point(80, 184);
this.lblDIM.Name = "lblDIM";
this.lblDIM.Size = new System.Drawing.Size(136, 16);
this.lblDIM.TabIndex = 13;
//
// label8
//
this.label8.Location = new System.Drawing.Point(8, 184);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(64, 16);
this.label8.TabIndex = 12;
this.label8.Text = "Dimensions";
//
// cmdSetRes
//
this.cmdSetRes.Location = new System.Drawing.Point(144, 320);
this.cmdSetRes.Name = "cmdSetRes";
this.cmdSetRes.Size = new System.Drawing.Size(128, 32);
this.cmdSetRes.TabIndex = 3;
this.cmdSetRes.Text = "Reset Resolution";
this.cmdSetRes.Click += new System.EventHandler(this.SetRes);
//
// ImageClass
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(392, 373);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.cmdSetRes,
this.groupBox1,
this.cmdOpen});
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "ImageClass";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "ImageClass";
this.Load += new System.EventHandler(this.ImageClass_Load);
this.groupBox1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new ImageClass());
}
private void ImageClass_Load(object sender, System.EventArgs e)
{
}
protected override void OnPaint( PaintEventArgs e)
{
Graphics G = e.Graphics;
if ( Bmp != null )
{
//OK Folks. This is a BitBlt!
G.DrawImage(Bmp, BMPContainer);
}
base.OnPaint(e);
}
private void Open(object sender, System.EventArgs e)
{
ofdBitmap.ShowDialog();
}
private void OpenFile(object sender,
System.ComponentModel.CancelEventArgs e)
{
//Wondering what sender is? Use reflection!
if ( !( sender is System.Windows.Forms.OpenFileDialog ) )
return;
Bmp = new Bitmap( ofdBitmap.FileName );
if ( Bmp != null )
{
ShowStats();
DrawBMP();
}
}
private void SetRes(object sender, System.EventArgs e)
{
if ( Bmp != null )
{
Bmp.SetResolution(150, 150);
DrawBMP();
}
}
private void DrawBMP()
{
if ( Bmp != null )
{
//Invalidate only the area where the image will be drawn
Graphics G = this.CreateGraphics();
GraphicsUnit GU = G.PageUnit;
BMPContainer = Bmp.GetBounds( ref GU ); //X,Y = 0
ShowStats();
this.Invalidate( Rectangle.Round( BMPContainer ) );
G.Dispose();
}
}
private void ShowStats()
{
if ( Bmp != null )
{
//Show some properties here
lblHT.Text = Bmp.Height.ToString();
lblWidth.Text = Bmp.Width.ToString();
lblVdpi.Text = Bmp.VerticalResolution.ToString();
lblHdpi.Text = Bmp.HorizontalResolution.ToString();
lblFormat.Text = Bmp.PixelFormat.ToString();
lblSize.Text = Bmp.Size.ToString();
lblDIM.Text = Bmp.PhysicalDimension.ToString();
}
}
}
}
Related examples in the same category