/*
GDI+ Programming in C# and VB .NET
by Nick Symmonds
Publisher: Apress
ISBN: 159059035X
*/
using System.Drawing.Printing;
using System.Runtime.InteropServices;
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Drawing.Text;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace Clipper_c {
///
/// Copyright Nicholas Symmonds 2002
/// This software is for instructional purposes only.
/// It may not be sold as is.
///
public class Clipper : System.Windows.Forms.Form {
Bitmap bmp;
NotifyIcon trayIcon = new NotifyIcon();
ContextMenu trayIconMenu = new ContextMenu();
private System.Windows.Forms.Button cmdCatch;
private System.Windows.Forms.Button cmdQuit;
///
/// Required designer variable.
///
private System.ComponentModel.Container components = null;
public Clipper() {
InitializeComponent();
this.Icon = new Icon("icon.ico");
this.BackColor = Color.BlanchedAlmond;
this.TransparencyKey = this.BackColor;
this.cmdCatch.BackColor = Color.Tomato;
this.cmdQuit.BackColor = Color.Tomato;
trayIconMenu.MenuItems.Add("Catch",
new EventHandler(this.cmdCatch_Click));
trayIconMenu.MenuItems.Add("Always On Top",
new EventHandler(this.ClipperOnTop));
trayIconMenu.MenuItems.Add("Show",
new EventHandler(this.Show_Main));
trayIconMenu.MenuItems.Add("Quit",
new EventHandler(this.cmdQuit_Click));
trayIcon.Icon = new Icon("icon.ico");
trayIcon.Text = "Clipper - Screen Capture";
trayIcon.ContextMenu = trayIconMenu;
trayIcon.Visible = true;
this.ShowInTaskbar = false;
}
protected override void Dispose( bool disposing ) {
if( disposing ) {
if (components != null) {
components.Dispose();
}
if (bmp != null)
bmp.Dispose();
trayIcon.Dispose();
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent() {
this.cmdCatch = new System.Windows.Forms.Button();
this.cmdQuit = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// cmdCatch
//
this.cmdCatch.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.cmdCatch.Location = new System.Drawing.Point(16, 24);
this.cmdCatch.Name = "cmdCatch";
this.cmdCatch.Size = new System.Drawing.Size(88, 32);
this.cmdCatch.TabIndex = 0;
this.cmdCatch.Text = "&Capture";
this.cmdCatch.Click += new System.EventHandler(this.cmdCatch_Click);
//
// cmdQuit
//
this.cmdQuit.Location = new System.Drawing.Point(144, 24);
this.cmdQuit.Name = "cmdQuit";
this.cmdQuit.Size = new System.Drawing.Size(64, 32);
this.cmdQuit.TabIndex = 1;
this.cmdQuit.Text = "&Quit";
this.cmdQuit.Click += new System.EventHandler(this.cmdQuit_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(224, 75);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.cmdQuit,
this.cmdCatch});
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.Name = "Form1";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Screen Capture";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
[STAThread]
static void Main() {
Application.Run(new Clipper());
}
private void Form1_Load(object sender, System.EventArgs e) {
}
protected override void OnResize(EventArgs e) {
base.OnResize(e);
if (this.WindowState == FormWindowState.Minimized)
this.Opacity = 0;
else
this.Opacity = 1;
}
///
/// The desktop capture method makes this form invisible before
/// showing the picture. Once the Save form has run this form becomes
/// visible. Making this form invisible is done via the forms opacity.
///
private void cmdCatch_Click(object sender, System.EventArgs e) {
bmp = DeskTop.Capture();
//Make the form invisible
this.Opacity = 0;
dtBitmap bmpShow = new dtBitmap(bmp);
bmp = bmpShow.GetBitmap;
if (bmp != null) {
frmSave frm = new frmSave(bmp);
frm.ShowDialog();
}
this.Opacity = 1;
}
private void cmdQuit_Click(object sender, System.EventArgs e) {
trayIcon.Visible = false;
this.Close();
}
private void Show_Main(object sender, System.EventArgs e) {
this.Visible = true;
this.WindowState = FormWindowState.Normal;
}
private void ClipperOnTop(object sender, System.EventArgs e) {
if ( trayIconMenu.MenuItems[1].Checked ) {
trayIconMenu.MenuItems[1].Checked = false;
this.TopMost = false;
} else {
trayIconMenu.MenuItems[1].Checked = true;
this.TopMost = true;
}
}
}
///
/// Copyright Nicholas Symmonds 2002
/// This software is for instructional purposes only.
/// It may not be sold as is.
///
/// Allow the user to select a frame for the image before saving it.
///
public class frmSave : System.Windows.Forms.Form {
private PictureBox m_Pic;
private Bitmap m_bmp;
private Bitmap m_OriginalBmp;
private PrintPreviewDialog Pv;
private PageSetupDialog Ps;
private PrintDocument Pd;
private PrintDialog Pr;
private Font FooterFont = new Font("Arial", 8);
private int PrintCount = 0;
private System.Windows.Forms.Panel P1;
private System.Windows.Forms.MainMenu mainMenu1;
private System.Windows.Forms.MenuItem mnuFile;
private System.Windows.Forms.MenuItem mnuSave;
private System.Windows.Forms.MenuItem mnuPrint;
private System.Windows.Forms.MenuItem mnuClose;
private System.Windows.Forms.MenuItem mnuPrintPreview;
private System.Windows.Forms.MenuItem mnuPrintNow;
private System.Windows.Forms.MenuItem NoMenu;
private System.Windows.Forms.MenuItem mnuAttr;
private System.Windows.Forms.MenuItem mnuBorder;
private System.ComponentModel.Container components = null;
public frmSave(Bitmap bmp) {
InitializeComponent();
m_bmp = (Bitmap)bmp.Clone();
m_OriginalBmp = (Bitmap)bmp.Clone();
P1.BackgroundImage = GetPanelImage();
P1.Dock = DockStyle.Fill;
m_Pic = new PictureBox();
m_Pic.BorderStyle = BorderStyle.None;
m_Pic.SizeMode = PictureBoxSizeMode.AutoSize;
m_Pic.Image = m_bmp;
P1.Controls.Add(m_Pic);
P1.Controls[0].Location = new Point(1, 1);
//Set up the prnting
Pv = new PrintPreviewDialog();
Ps = new PageSetupDialog();
Pr = new PrintDialog();
Pd = new PrintDocument();
Pd.DocumentName = "ScreenShot";
Pv.Document = Pd;
Ps.Document = Pd;
Pr.Document = Pd;
Pd.BeginPrint += new PrintEventHandler(this.pd_BeginPrint);
Pd.PrintPage += new PrintPageEventHandler(this.pd_Print);
}
protected override void Dispose( bool disposing ) {
if( disposing ) {
if(components != null) {
components.Dispose();
}
P1.Dispose();
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent() {
this.P1 = new System.Windows.Forms.Panel();
this.mainMenu1 = new System.Windows.Forms.MainMenu();
this.mnuFile = new System.Windows.Forms.MenuItem();
this.mnuSave = new System.Windows.Forms.MenuItem();
this.mnuClose = new System.Windows.Forms.MenuItem();
this.NoMenu = new System.Windows.Forms.MenuItem();
this.mnuAttr = new System.Windows.Forms.MenuItem();
this.mnuBorder = new System.Windows.Forms.MenuItem();
this.mnuPrint = new System.Windows.Forms.MenuItem();
this.mnuPrintPreview = new System.Windows.Forms.MenuItem();
this.mnuPrintNow = new System.Windows.Forms.MenuItem();
this.SuspendLayout();
//
// P1
//
this.P1.AutoScroll = true;
this.P1.BackColor = System.Drawing.SystemColors.Control;
this.P1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.P1.Location = new System.Drawing.Point(8, 16);
this.P1.Name = "P1";
this.P1.Size = new System.Drawing.Size(768, 520);
this.P1.TabIndex = 0;
//
// mainMenu1
//
this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuFile,
this.NoMenu,
this.mnuPrint});
//
// mnuFile
//
this.mnuFile.Index = 0;
this.mnuFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuSave,
this.mnuClose});
this.mnuFile.Text = "&File";
//
// mnuSave
//
this.mnuSave.Index = 0;
this.mnuSave.Text = "&Save";
this.mnuSave.Click += new System.EventHandler(this.mnuSave_Click);
//
// mnuClose
//
this.mnuClose.Index = 1;
this.mnuClose.Text = "&Close";
this.mnuClose.Click += new System.EventHandler(this.mnuClose_Click);
//
// NoMenu
//
this.NoMenu.Index = 1;
this.NoMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuAttr,
this.mnuBorder});
this.NoMenu.Text = "&Attributes";
this.NoMenu.Click += new System.EventHandler(this.mnuAttr_Click);
//
// mnuAttr
//
this.mnuAttr.Index = 0;
this.mnuAttr.Text = "Resolution";
this.mnuAttr.Click += new System.EventHandler(this.mnuAttr_Click);
//
// mnuBorder
//
this.mnuBorder.Index = 1;
this.mnuBorder.Text = "Border";
this.mnuBorder.Click += new System.EventHandler(this.mnuBorder_Click);
//
// mnuPrint
//
this.mnuPrint.Index = 2;
this.mnuPrint.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuPrintPreview,
this.mnuPrintNow});
this.mnuPrint.Text = "&Print";
//
// mnuPrintPreview
//
this.mnuPrintPreview.Index = 0;
this.mnuPrintPreview.Text = "Pre&view";
this.mnuPrintPreview.Click += new System.EventHandler(this.mnuPrintPreview_Click);
//
// mnuPrintNow
//
this.mnuPrintNow.Index = 1;
this.mnuPrintNow.Text = "&Print";
this.mnuPrintNow.Click += new System.EventHandler(this.mnuPrintNow_Click);
//
// frmSave
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(792, 553);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.P1});
this.Menu = this.mainMenu1;
this.MinimizeBox = false;
this.Name = "frmSave";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Save Image";
this.Load += new System.EventHandler(this.frmSave_Load);
this.ResumeLayout(false);
}
#endregion
private void frmSave_Load(object sender, System.EventArgs e) {
}
///
/// This routine makes a blank image and colors it with a hatch brush
/// This image is handed back to the caller who then uses this image as
/// the background image for the panel. The panel will tile this image
/// for as many times as it takes to fill the panel.
///
private Image GetPanelImage() {
Image i = new Bitmap(50, 50);
using(Graphics G = Graphics.FromImage(i)) {
//No need for high quality here. We need Speed!!!
G.SmoothingMode = SmoothingMode.HighSpeed;
Brush B = new HatchBrush(HatchStyle.Cross, Color.Cyan, Color.LightCyan);
G.FillRectangle(B, 0, 0, i.Width, i.Height);
}
return i;
}
private void mnuAttr_Click(object sender, System.EventArgs e) {
Attributes frm = new Attributes(m_bmp.HorizontalResolution, m_bmp.Size);
frm.ShowDialog();
m_bmp.SetResolution(frm.SaveRes, frm.SaveRes);
}
private void mnuClose_Click(object sender, System.EventArgs e) {
this.Close();
}
private void mnuSave_Click(object sender, System.EventArgs e) {
SaveFileDialog sd = new SaveFileDialog();
sd.Filter = "Bitmap (*.bmp)|*.bmp|" +
"JPEG (*.jpg)|*.jpg|" +
"GIF (*.Gif)|*.gif|" +
"TIFF (*.tif)|*.tif|" +
"PNG (*.png)|*.png|" +
"EMF (*.emf)|*.emf" ;
sd.FilterIndex = 1 ;
sd.RestoreDirectory = true ;
sd.AddExtension = true;
if(sd.ShowDialog() == DialogResult.OK) {
if (sd.FileName.Length != 0) {
switch(sd.FilterIndex) {
case 1:
//Save as bitmap
m_bmp.Save(sd.FileName, ImageFormat.Bmp);
break;
case 2:
//Save as JPEG
m_bmp.Save(sd.FileName, ImageFormat.Jpeg);
break;
case 3:
//Save as GIF
m_bmp.Save(sd.FileName, ImageFormat.Gif);
break;
case 4:
//Save as TIFF
m_bmp.Save(sd.FileName, ImageFormat.Tiff);
break;
case 5:
//Save as PNG
m_bmp.Save(sd.FileName, ImageFormat.Png);
break;
case 6:
//Save as EMF
m_bmp.Save(sd.FileName, ImageFormat.Emf);
break;
default:
break;
}
}
}
}
#region Printer routines
private void pd_BeginPrint ( object sender, PrintEventArgs e) {
Pd.DocumentName = "ScreenShot " + (++PrintCount).ToString();
}
private void pd_Print(object sender, PrintPageEventArgs e) {
Graphics G = e.Graphics;
float LeftMargin = e.MarginBounds.Left;
float TopMargin = e.MarginBounds.Top;
float BottomMargin = e.MarginBounds.Bottom;
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Far;
sf.LineAlignment = StringAlignment.Center;
Rectangle Border = e.MarginBounds;
Border.Inflate(1, 1);
RectangleF Footer = new Rectangle(e.MarginBounds.Left,
e.MarginBounds.Bottom,
e.MarginBounds.Width,
e.PageBounds.Bottom -
e.MarginBounds.Bottom);
//Type in the footer
G.DrawString(Pd.DocumentName, FooterFont, Brushes.Black, Footer, sf);
sf.Alignment = StringAlignment.Near;
G.DrawString(DateTime.Now.ToLongDateString(), FooterFont,
Brushes.Black,
Footer, sf);
//Draw the rectangle and the image. Image is stretched to fit!!!
G.DrawRectangle(Pens.Black, Border);
G.DrawImage(m_bmp, e.MarginBounds);
sf.Dispose();
}
private void mnuPrintPreview_Click(object sender, System.EventArgs e) {
Pv.WindowState = FormWindowState.Maximized;
Pv.ShowDialog();
}
private void mnuPrintNow_Click(object sender, System.EventArgs e) {
if (Pr.ShowDialog() == DialogResult.OK)
Pd.Print();
}
#endregion
private void mnuBorder_Click(object sender, System.EventArgs e) {
if (!mnuBorder.Checked) {
using (Graphics G = Graphics.FromImage(m_bmp)) {
using (Pen P = new Pen(Brushes.Black, 2)) {
G.DrawRectangle(P, new Rectangle(0, 0, m_bmp.Size.Width,
m_bmp.Size.Height));
m_Pic.Image = m_bmp;
mnuBorder.Checked = true;
}
}
} else {
m_bmp = (Bitmap)m_OriginalBmp.Clone();
m_Pic.Image = m_bmp;
mnuBorder.Checked = false;
}
}
}
///
/// Copyright Nicholas Symmonds 2002
/// This software is for instructional purposes only.
/// It may not be sold as is.
///
/// This form is the one that holds the complete bitmap of the screen.
/// The border is set to nothing and the form is maximized. The cursor
/// is also changed to tell the user (s)he can now drag a line and make
/// a capture box. When the screen is captured this form shows up almost
/// immediately.
///
public class dtBitmap : Form {
#region Class local storage
private Bitmap bmp;
private Rectangle InvalidRect = Rectangle.Empty;
private Pen mRectPen;
private Corectangle mbmpRect;
#endregion
public dtBitmap(Bitmap b) {
mbmpRect = new Corectangle();
mRectPen = new Pen(Brushes.Red, 1);
mRectPen.DashStyle = DashStyle.DashDot;
bmp = b.Clone(new RectangleF(0, 0, b.Width, b.Height), b.PixelFormat);
this.SetStyle(ControlStyles.AllPaintingInWmPaint,true);
this.SetStyle(ControlStyles.DoubleBuffer,true);
this.Size = bmp.Size;
this.FormBorderStyle = FormBorderStyle.None;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Cursor = new Cursor("hcross.cur");
this.BackgroundImage = bmp;
//Show as modal
this.ShowDialog();
}
private void InitializeComponent() {
//
// dtBitmap
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Name = "dtBitmap";
this.Load += new System.EventHandler(this.dtBitmap_Load);
}
protected override void Dispose( bool disposing ) {
if( disposing ) {
if (bmp != null)
bmp.Dispose();
}
base.Dispose( disposing );
}
public Bitmap GetBitmap {
get{return bmp;}
}
private void dtBitmap_Load(object sender, System.EventArgs e) {
}
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
e.Graphics.DrawRectangle(mRectPen, mbmpRect.Rect);
}
#region Squeek
protected override void OnMouseDown(MouseEventArgs e) {
base.OnMouseDown(e);
if (e.Button != MouseButtons.Left)
return;
mbmpRect = new Corectangle(e.X, e.Y);
}
protected override void OnMouseUp(MouseEventArgs e) {
base.OnMouseUp(e);
Invalidate();
bmp = bmp.Clone(mbmpRect.Rect, bmp.PixelFormat);
this.Close();
}
protected override void OnMouseMove(MouseEventArgs e) {
base.OnMouseMove(e);
if (e.Button != MouseButtons.Left)
return;
mbmpRect.EndX = e.X;
mbmpRect.EndY = e.Y;
Invalidate();
}
#endregion
}
///
/// Copyright Nicholas Symmonds 2002
/// This software is for instructional purposes only.
/// It may not be sold as is.
///
/// This class encapsulates the API functions necessary to get the
/// desktop image and form a bitmap from it.
/// Not everything can be done in GDI+ :)
///
public sealed class DeskTop {
[DllImport("user32.dll")]
internal extern static IntPtr GetDesktopWindow();
[DllImport("user32.dll")]
internal extern static IntPtr GetDC( IntPtr windowHandle );
[DllImport("gdi32.dll")]
internal extern static IntPtr GetCurrentObject( IntPtr hdc,
ushort objectType );
[DllImport("user32.dll")]
internal extern static void ReleaseDC( IntPtr hdc );
[DllImport("user32.dll")]
internal extern static void UpdateWindow( IntPtr hwnd );
public static Bitmap Capture() {
//Get a pointer to the desktop window
IntPtr desktopWindow = GetDesktopWindow();
//Get a device context from the desktop window
IntPtr desktopDC = GetDC( desktopWindow );
//Get a GDI handle to the image
IntPtr desktopBitmap = GetCurrentObject( desktopDC, 7 );
//This call takes as an argument the handle to a GDI image
Bitmap desktopImage = Image.FromHbitmap( desktopBitmap );
//Do not create any memory leaks
ReleaseDC( desktopDC );
return desktopImage;
}
}
///
/// This class takes any starting point and any ending point
/// structures and makes a rectangle. Using this class you can use the mouse
/// to draw a rectangle on the screen from any starting point to any ending
/// point. You cannot do this with a regular rectangle.
///
public class Corectangle {
#region Class Local Variables
private Point mStart;
private Point mEnd;
private Point mRealStart;
private Point mRealEnd;
private Size mRealSize;
private Rectangle mRect;
#endregion
public Corectangle(int X, int Y) {
mStart = Point.Empty;
mEnd = Point.Empty;
mRealStart = Point.Empty;
mRealEnd = Point.Empty;
mRealSize = Size.Empty;
mStart.X = X;
mStart.Y = Y;
mRealStart.X = X;
mRealStart.Y = Y;
mRect = Rectangle.Empty;
}
public Corectangle() {
mStart = Point.Empty;
mEnd = Point.Empty;
mRealStart = Point.Empty;
mRealEnd = Point.Empty;
mRealSize = Size.Empty;
mStart.X = 0;
mStart.Y = 0;
mRealStart.X = 0;
mRealStart.Y = 0;
mRect = Rectangle.Empty;
}
///
/// Ending X Value of rectangle
///
public int EndX {
set{ mEnd.X = value;
}
}
///
/// Ending Y Value of rectangle
///
public int EndY {
set{
mEnd.Y = value;
}
}
///
/// Get the corrected rectangle
///
public Rectangle Rect {
get {
MakeReal();
mRect.Location = mRealStart;
mRect.Size = mRealSize;
return mRect;
}
}
private void MakeReal() {
//Started top left, ended bottom right
if (mEnd.X > mStart.X && mEnd.Y > mStart.Y) {
mRealStart = mStart;
mRealEnd = mEnd;
mRealSize = new Size(mRealEnd.X-mRealStart.X, mRealEnd.Y-mRealStart.Y);
return;
}
//Started bottom right, ended top left
if (mEnd.X < mStart.X && mEnd.Y < mStart.Y) {
mRealEnd = mStart;
mRealStart = mEnd;
mRealSize = new Size(mRealEnd.X-mRealStart.X, mRealEnd.Y-mRealStart.Y);
return;
}
//Started top right left, ended bottom left
if (mEnd.X < mStart.X && mEnd.Y > mStart.Y) {
mRealStart.X = mEnd.X;
mRealStart.Y = mStart.Y;
mRealEnd.X = mStart.X;
mRealEnd.Y = mEnd.Y;
mRealSize = new Size(mRealEnd.X-mRealStart.X, mRealEnd.Y-mRealStart.Y);
return;
}
//Started bottom left, ended top right
if (mEnd.X > mStart.X && mEnd.Y < mStart.Y) {
mRealStart.X = mStart.X;
mRealStart.Y = mEnd.Y;
mRealEnd.X = mEnd.X;
mRealEnd.Y = mStart.Y;
mRealSize = new Size(mRealEnd.X-mRealStart.X, mRealEnd.Y-mRealStart.Y);
return;
}
}
}
///
/// Summary description for Attributes.
///
public class Attributes : System.Windows.Forms.Form {
private float m_Res;
private System.Windows.Forms.Label lblCurrentRes;
private System.Windows.Forms.Label lblRes;
private System.Windows.Forms.Button cmdOK;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.RadioButton optCurrent;
private System.Windows.Forms.RadioButton opt120;
private System.Windows.Forms.RadioButton opt150;
private System.Windows.Forms.RadioButton opt300;
private System.Windows.Forms.Label lblSize;
private System.Windows.Forms.Label lblSizeVal;
///
/// Required designer variable.
///
private System.ComponentModel.Container components = null;
public Attributes(float CurrentResolution, Size sz) {
InitializeComponent();
m_Res = CurrentResolution;
lblRes.Text = m_Res.ToString() + " DPI";
lblSizeVal.Text = sz.Width.ToString() + "w X " + sz.Height.ToString() + "h";
optCurrent.Checked = true;
this.Opacity = 1.0;
}
///
/// Clean up any resources being used.
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.lblCurrentRes = new System.Windows.Forms.Label();
this.lblRes = new System.Windows.Forms.Label();
this.cmdOK = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.opt300 = new System.Windows.Forms.RadioButton();
this.opt150 = new System.Windows.Forms.RadioButton();
this.opt120 = new System.Windows.Forms.RadioButton();
this.optCurrent = new System.Windows.Forms.RadioButton();
this.lblSize = new System.Windows.Forms.Label();
this.lblSizeVal = new System.Windows.Forms.Label();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// lblCurrentRes
//
this.lblCurrentRes.Location = new System.Drawing.Point(24, 16);
this.lblCurrentRes.Name = "lblCurrentRes";
this.lblCurrentRes.Size = new System.Drawing.Size(160, 16);
this.lblCurrentRes.TabIndex = 0;
this.lblCurrentRes.Text = "Current Resolution";
//
// lblRes
//
this.lblRes.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.lblRes.Location = new System.Drawing.Point(24, 32);
this.lblRes.Name = "lblRes";
this.lblRes.Size = new System.Drawing.Size(152, 16);
this.lblRes.TabIndex = 1;
//
// cmdOK
//
this.cmdOK.Location = new System.Drawing.Point(232, 160);
this.cmdOK.Name = "cmdOK";
this.cmdOK.Size = new System.Drawing.Size(48, 32);
this.cmdOK.TabIndex = 2;
this.cmdOK.Text = "OK";
this.cmdOK.Click += new System.EventHandler(this.cmdOK_Click);
//
// groupBox1
//
this.groupBox1.Controls.AddRange(new System.Windows.Forms.Control[] {
this.opt300,
this.opt150,
this.opt120,
this.optCurrent});
this.groupBox1.Location = new System.Drawing.Point(24, 64);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(168, 128);
this.groupBox1.TabIndex = 3;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Save Resolution";
//
// opt300
//
this.opt300.Location = new System.Drawing.Point(16, 96);
this.opt300.Name = "opt300";
this.opt300.Size = new System.Drawing.Size(104, 16);
this.opt300.TabIndex = 3;
this.opt300.Text = "300 DPI";
//
// opt150
//
this.opt150.Location = new System.Drawing.Point(16, 72);
this.opt150.Name = "opt150";
this.opt150.Size = new System.Drawing.Size(104, 16);
this.opt150.TabIndex = 2;
this.opt150.Text = "150 DPI";
//
// opt120
//
this.opt120.Location = new System.Drawing.Point(16, 48);
this.opt120.Name = "opt120";
this.opt120.Size = new System.Drawing.Size(104, 16);
this.opt120.TabIndex = 1;
this.opt120.Text = "120 DPI";
//
// optCurrent
//
this.optCurrent.Location = new System.Drawing.Point(16, 24);
this.optCurrent.Name = "optCurrent";
this.optCurrent.Size = new System.Drawing.Size(104, 16);
this.optCurrent.TabIndex = 0;
this.optCurrent.Text = "Current";
//
// lblSize
//
this.lblSize.Location = new System.Drawing.Point(192, 16);
this.lblSize.Name = "lblSize";
this.lblSize.Size = new System.Drawing.Size(88, 16);
this.lblSize.TabIndex = 4;
this.lblSize.Text = "Size";
//
// lblSizeVal
//
this.lblSizeVal.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.lblSizeVal.Location = new System.Drawing.Point(192, 32);
this.lblSizeVal.Name = "lblSizeVal";
this.lblSizeVal.Size = new System.Drawing.Size(88, 16);
this.lblSizeVal.TabIndex = 5;
//
// Attributes
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(294, 205);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.lblSizeVal,
this.lblSize,
this.groupBox1,
this.cmdOK,
this.lblRes,
this.lblCurrentRes});
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Attributes";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Attributes";
this.Load += new System.EventHandler(this.Attributes_Load);
this.groupBox1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private void Attributes_Load(object sender, System.EventArgs e) {
}
public float SaveRes {
get{
return m_Res;
}
}
private void cmdOK_Click(object sender, System.EventArgs e) {
if (opt120.Checked)
m_Res = 120f;
if (opt150.Checked)
m_Res = 150f;
if (opt300.Checked)
m_Res = 300f;
this.Close();
}
}
}
Clipper-c.zip( 72 k)