[
Advertise | Submit Code | About us | Contact us | Link us
]
Go!
Membership Services
Login
Register

Home
C# General

General

C# Language

Design & Architecture

Algorithms

Database

Security

Active Directory

COM Interop

Remoting
C# Windows Forms

General

Combo and List boxes

Miscellaneous Controls

Button Controls

Edit Controls
Cutting Edge

ASP.NET 2.0

Visual Studio 2005

Windows Longhorn

SQL Server 2005
C# Multimedia and GDI+

General

DirectX

GDI+

Audio
Internet & Web

General

Images and multimedia

Database

Utilities

Security

ASP.NET Controls

Design and Architecture

Webservices
.NET

General

Design & Architecture

Algorithms

Database

Security

Active Directory

COM Interop

Remoting

ADO.NET

XML.NET

Tools

Enterprise

IDE
Visual Basic .NET

VB.NET General

VB.NET Controls
General Reading

.NET Books Review

Product Showcase

Book Chapters

Business Design & Strategy
Community

Discuss

Job Board

Discussion

CodeXchange
DeveloperLand

Advertise

Submit Code

About us

Contact us

Link us
Miscellaneous

Favorite Links

Downloads

Programming Sites

Top Stories
Regular Expressions

E-Mail

Date/Time
Home > C# Multimedia and GDI+ > GDI+
A Drawing Canvas in C#
Posted by on Monday, August 23, 2004 (EST)

The beginnings of a framework for learning about graphics and creating Windows applications using Windows Forms and the .NET Framework.

This article has been viewed: 8,541 times
Technology: GDI+.

GraphicsExplorer.zip (29.15 KB)

Contents

Introduction

This project is the beginnings of a framework for experimenting with graphics techniques, and in the process learn how to create Windows applications using Windows Forms and the .NET Framework.

Download the code, GraphicsExplorer.zip, and unzip it into a temporary directory.

In Visual Studio create a C# Windows Application and call it GraphicsExplorer.

Delete Form1 from your project, by right clicking on it in Solution Explorer and selecting delete from the popup menu.  From the downloaded source code, copy the files from the GraphicsExplorer dir to your new GraphicsExplorer dir.  To add these to your project, right click on GraphicsExplorer project in the Solutions Explorer window and select Add then Add Existing Item from the popup menu.  In the File Select popup select all the .cs files except Assembly.cs and click Open.

In Solution Explorer right click on Solution 'GraphicsExplorer', and select Add then New Project.  Make this a C# Class Library called Art.  Delete Class1.cs from the project.  Copy the source code from the Art dir in the download into your new Art dir, then add them to the Art project.

In Solution Explorer, under the GraphicsExplorer project, right click on References and select Add References.  On the Projects tab select the Art project, and click the Select button then the OK button.  Add a reference to System.Drawing.dll to the Art project.

Build the Solution, then run the application.

Here is an example of the Mandelbrot Set.

The drawing code for the Fractal Trees, Snow Flakes, Hilbert Curves, Sierpinski Curves, Peano Curve, Sierpinski Gasket and Mandelbrot Set, was adapted from the VB code in the book Visual Basic Graphics Programming [^] by Rod Stephens.

The program has a Canvas class, derived from a UserControl.  An abstract DrawingObject class is used as a base for Drawing objects.  Drawing Objects have a Render function, to render itself using a Graphics object.  A DrawingObjectGroup Class is used to define collections of Drawing Objects.

To make the drawing code more reusable, it was placed in a Library dll.

The following ASP.NET example requires you to have IIS 5 installed and running on your development system.

To see how this code is used for generating web page graphics using ASP.NET, add an ASP.NET Web application project to the Solution.  Call it WebArt.  In the WebArt project add a reference to the Art project.  Add a Web Form to the project and call it SnowFlake.aspx.

Add contentType="image/jpeg" to the @Page directive at the top of SnowFlake.aspx.  In the code behind file change the Page_Load funtion to the following:

private void Page_Load(object sender, System.EventArgs e)
{
     Response.Clear();
     Bitmap bmp = new Bitmap( 300, 300, PixelFormat.Format24bppRgb );
     Graphics g = Graphics.FromImage( bmp );
     g.Clear( Color.White );
     DrawingObjectGroup draw = new DrawingObjectGroup();
     Art.SnowFlake snoFlake = new Art.SnowFlake( draw );
     snoFlake.Height = 290;
     snoFlake.Width = 290;
     snoFlake.Draw();
     draw.Render( g );
     bmp.Save( Response.OutputStream, ImageFormat.Jpeg );
     g.Dispose();
     bmp.Dispose();
     Response.End();
}

Add using System.Drawing; & using Art; to the top of the code behind file.

Set the WebArt project as the Startup Project by right clicking on WebArt in the Solution explorer and select Set As Startup Project form the popup menu.  Right click on SnowFlake.aspx in Solution explore and set it as the startup page.  Run the project.  You should get a web page with a snow flake draw on it.

To make things more interesting lets use the aspx page in an image tag on a regular web page.

Add an HTML Page to the WebArt project and call it test.html. Add the following HTML to the body of the page.

<h1>An aspx page in an image tag.</h1>
<IMG alt="" src="SnowFlake.aspx">
Set test.html as the startup page and run the application again.

Top Go to Table of Contents

About Bill Burris

3D Graphics, OpenGL AI Python, C#, C++

Click here if you want to know more about .

Other articles that may interest you

  • Write a Word Add-In – Part 0
  • Write a Word Add-In – Part I
  • Lengthy Operations on Single Thread in .NET Application
  • Learning Draughts
  • Exceptions and Performance
  • Average Rating :

    Discussion Forums
    Got a programming related question? Hopefully someone has the answer... Want to help out other developers? Visit our discussion forums.

    Sponsored by:

    New Articles

  • Exceptions and Performance
    Almost every time exceptions are mentioned in mailing lists and newsgroups, people say they're really expensive.Let's examine that claim, shall we?

  • Creating multilingual websites - Part 1
    Extend the existing globalization capabilities of .NET to create flexible and powerful multilingual web sites. First, create a custom ResourceManager, and then create custom localized-capable server controls to easily deploy multilingual functionality.

  • Parameter passing in C#
    Many people have become fairly confused about how parameters are passed in C#, particularly with regard to reference types. This page should help to clear up some of that confusion

  • Most Popular Articles

  • LDAP, IIS and WinNT Directory Services
    This article explains how to use .NET Directory Services to retrieve and search directory objects, create new directory objects and edit or delete existing directory objects. Describes Active Directory Application Mode (ADAM) and how to use the IIS, WinNT and LDAP directory (ADSI) provider.

  • An in-depth look at WMI and instrumentation, Part II
    WMI stands for Windows Management Instrumentation and, as the name indicates, is about managing your IT infrastructure this article is the second part of a two-part series.

  • An in-depth look at WMI and instrumentation, Part I
    WMI stands for Windows Management Instrumentation and, as the name indicates, is about managing your IT infrastructure this article provides an in-depth look at WMI and MOM 2005

  • New Books

  • Murach's ASP.NET 2.0 Upgrader's Guide: VB Edition
    What’s new and how to use it! That’s what this book delivers if you’re a VB developer who’s interested in upgrading from ASP.NET 1.x to ASP.NET 2.0.

  • C# in easy steps
    Learn to program with Microsoft’s premier programming language. No previous programming knowledge is assumed. With numerous easy-to-follow examples, this title explains the essentials of object-oriented programming with C#.

  • Murach's ASP.NET web programming with VB.NET
    Murach's ASP.NET web programming with VB.NET by Doug Lowe and Anne Prince is a in depth training and reference book for ASP.NET programming using VB.NET. The book builds upon Murach's previous books and covers more advanced concepts for programming ASP.NET pages.

  • Got Code?

    if you have any article , source code , or anything else you'd like to share with this community that you think others might find useful, please submit it here and we will gladly make it available on this site. submit@developerland.com.
    Partners

    All articles are copyrighted by their individual authors unless otherwise specified , everything else Copyright ©2004-2006 DeveloperLand