![]() |
Multimedia »
GDI+ »
General
Intermediate
A simple Windows Forms image viewerBy corvadoThis is a simple viewer application which allows you to apply basic operation on images such as Rotate, Flip, ROI (Region of interest) zoom and Panning. |
C#, Windows, .NET 1.0, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||


This is a simple viewer application which allows you to apply basic operation on images such as Rotate, Flip,
ROI (Region of interest) zoom and Panning. It offers a sample example for the powerful Matrix class use and the way to have unclassical forms look.
A simple windowing method is implemented using middle muse button (available for grayscale image).
The interesting code is based on the DisplayPort class which acts as a viewport. A command mechanism is also develop
to allow multiple DisplayPort to interact with the user cooperatively.
Adding new behaviour such as displaying and designing graphics above the image is easy. See the DisplayLinkRind class
which is a manager of simple text overlays.
To add a DisplayPort to a WindowsForm just add a member like this and chain the MouseDown event:
public LimfWnd()
{
this.ClientSize = new System.Drawing.Size(464, 344);
this.m_DisplayPort = new DisplayPort();
InitializeComponent();
this.m_DisplayPort.MouseDown += new MouseEventHandler(LimfWnd_MouseDown);
...
Then add the controls to the form:
private void InitializeComponent()
{
//
// LimfWnd
//
this.AllowDrop = true;
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.BackColor = System.Drawing.SystemColors.WindowText;
this.ClientSize = new System.Drawing.Size(SystemInformation.WorkingArea.Width/2,
SystemInformation.WorkingArea.Height/2);
this.Controls.AddRange(new System.Windows.Forms.Control[] {this.m_DisplayPort,
this.splitter1});
...
Add image to the DisplayPort:
private void LoadImage(object sender, System.EventArgs e)
{
FileDialog Boite = new OpenFileDialog();
Boite.ShowDialog();
if(Boite.FileName.Length > 0)
{
Image Img = Image.FromFile(Boite.FileName);
m_DisplayPort.SetImage(Img);
}
}
...
Chain the menu list event:
private void LimfWnd_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Right)
{
CMenuActionList CommandsLst;
if(sender.GetType() == m_DisplayPort.GetType())
CommandsLst = ((DisplayPort) sender).GetCommand(null);
else
CommandsLst = new CMenuActionList();
if(CommandsLst == null)
CommandsLst = new CMenuActionList();
CommandsLst.AddMenu(1, "Quit", 1, new System.EventHandler(Quit));
The main difficulty was to create the basic rotate/flip routines to manage the coordinate converter. The only limit I found regarding the use of GDI+ was the 16 bits per pixel format which is not implemented, so no use for such images.
Version 1.0 is the first release.
| You must Sign In to use this message board. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 31 Jan 2003 Editor: Chris Maunder |
Copyright 2003 by corvado Everything else Copyright © CodeProject, 1999-2009 Web20 | Advertise on the Code Project |