The following is an Image viewer application which can
be used to view image files of many formats. This example
is provides a good introduction to Winforms.
For compiling the code, use the following at the command line:
csc /target:winexe /reference:System.dll /reference:System.Winforms.dll /reference:System.Drawing.dll /reference:Microsoft.Win32.Interop.dll PictureViewer?.cs
Source Code:
namespace myPictViewer
{
using System;
using System.WinForms;
using System.Drawing;
public class PictViewForm? : Form
{
protected Bitmap myPicture;
protected bool myPicStyle = true;
protected MenuItem? showWindow;
protected MenuItem? showNative;
protected MenuItem? closePicture;
public PictViewForm()
{
this.Text = "Picture Viewer";
this.ClientSize = new Size(640,480);
MainMenu? myMainMenu = new MainMenu();
MenuItem? myFileItem = myMainMenu.MenuItems.Add("&File");
MenuItem? myHelpItem = myMainMenu.MenuItems.Add("&Help");
//The line below is commented out as it may not work for Beta 1 of .NET
//myFileItem.Popup += new EventHandler? (checkMenus);
myFileItem.MenuItems.Add(new MenuItem("&Open" , new EventHandler(OnOpen) , Shortcut.CtrlO));
myFileItem.MenuItems.Add("-");
myFileItem.MenuItems.Add(showWindow = new MenuItem("Show Image - Fit To Window" , new EventHandler(ShowWindow)));
myFileItem.MenuItems.Add(showNative = new MenuItem("Show Image - Native Size" , new EventHandler(ShowNative)));
myFileItem.MenuItems.Add("-");
myFileItem.MenuItems.Add(closePicture = new MenuItem("&Close Picture" , new EventHandler(OnClose) , Shortcut.CtrlH));
myFileItem.MenuItems.Add(new MenuItem("E&xit" , new EventHandler(OnExit) , Shortcut.CtrlE));
myHelpItem.MenuItems.Add(new MenuItem("&About" , new EventHandler(OnAbout) , Shortcut.CtrlA));
closePicture.Enabled = false;
this.Menu = myMainMenu;
this.StartPosition = FormStartPosition?.CenterScreen;
}
protected override void OnPaint(PaintEventArgs myArgs)
{
if (myPicture != null)
{
Graphics myGraph = myArgs.Graphics;
if (myPicStyle == true)
{
myGraph.DrawImage(myPicture , AutoScrollPosition?.X , AutoScrollPosition?.Y , myPicture.Width , myPicture.Height);
}
else
{
myGraph.DrawImage(myPicture , ClientRectangle);
}
}
}
private void OnAbout(Object mySender , EventArgs? myArgs)
{
MessageBox?.Show("Picture Viewer 1.0 by Jim","About Picture Viewer",MessageBox?.OK|MessageBox.IconInformation);
}
private void checkMenus(Object mySender , EventArgs? myArgs)
{
if (myPicture != null)
{
if (myPicStyle == true)
{
showNative.Checked = true;
showWindow.Checked = false;
}
else
{
showNative.Checked = false;
showWindow.Checked = true;
}
}
else
{
showNative.Checked = false;
showWindow.Checked = false;
myPicStyle = true;
}
}
private void ShowWindow(Object mySender , EventArgs? myArgs)
{
myPicStyle = false;
this.SetStyle (ControlStyles.ResizeRedraw, true);
if (myPicture != null)
{
this.AutoScroll = false;
this.Invalidate();
}
}
private void ShowNative(Object mySender , EventArgs? myArgs)
{
myPicStyle = true;
this.SetStyle (ControlStyles.ResizeRedraw, false);
if (myPicture != null)
{
this.AutoScroll = true;
this.AutoScrollMinSize = myPicture.Size;
this.Invalidate();
}
}
private void OnClose(Object mySender , EventArgs? myArgs)
{
closePicture.Enabled = false;
myPicture = null;
myPicStyle = false;
this.AutoScroll = false;
this.Invalidate();
}
private void OnExit(Object mySender , EventArgs? myArgs)
{
this.Close();
}
private void OnOpen(Object mySender , EventArgs? myArgs)
{
if (myPicture != null)
{
}
OpenFileDialog? myDialog = new OpenFileDialog();
myDialog.Filter = "Image Files (JPEG,GIF,BMP)|*.jpg;*.jpeg;*.gif;*.bmp|JPEG Files(*.jpg;*.jpeg)|*.jpg;*.jpeg|GIF Files(*.gif)|*.gif|BMP Files(*.bmp)|*.bmp";
if (myDialog.ShowDialog() == DialogResult?.OK)
{
String myFileName = myDialog.FileName;
if (myFileName.Length != 0)
{
try
{
closePicture.Enabled = true;
myPicture = new Bitmap(myFileName);
this.Text = "Picture Viewer - " + myFileName;
this.AutoScroll = true;
this.AutoScrollMinSize = myPicture.Size;
this.Invalidate();
}
catch
{
MessageBox?.Show(String.Format("{0} is not a valid Image File" , myFileName) , "Picture Viewer" , MessageBox?.OK | MessageBox?.IconError);
}
}
}
}
public static void Main(string[] args)
{
Application.Run(new PictViewForm());
}
}
}
0 comments:
Post a Comment