Click here to Skip to main content
Licence 
First Posted 20 Mar 2003
Views 114,769
Bookmarked 40 times

Graphics on the Fly Directly from ASP.NET Server Control without .ASPX page

By | 23 Mar 2003 | Article
This is a simple method to display a custom drawn graphic on the fly without referencing an .aspx page.

Sample Image - print.png

Introduction

This is a simple article to demonstrate rendering a graphic image on the fly from within a server control without using an .aspx page. One caveat, I have not gotten this method to work at design time, only run time.

On an .aspx page, you would normally create a bitmap with GDI+, and then use this syntax to draw it:

Response.ContentType = "image/jpeg";
objBitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); 

The only examples I had seen which created graphics on the fly (buttons and charts) all included an .aspx page which they would call from the Render method with a query string. The .aspx page would then render the graphic based on the query string.

Here is a way to render the graphic at runtime without the .aspx page.

using System.Drawing;
using System.Drawing.Imaging;
//... 
protected override void Render(HtmlTextWriter output) 
{ 
  Bitmap objBitmap = new Bitmap(120,30); 
  Graphics objGraphics = Graphics.FromImage(objBitmap);
  //Fill the background 
  objGraphics.FillRectangle(new SolidBrush(Color.LightBlue),0,0,120,30); 
  //Create blue-yellow bullet point 
  objGraphics.FillEllipse(new SolidBrush(Color.Blue),3,9,10,10); 
  objGraphics.FillEllipse(new SolidBrush(Color.Yellow),4,10,8,8); 
  //Draw text next to bullet point 
  objGraphics.DrawString("Submit", new Font("Tahoma",8), 
                     new SolidBrush(Color.Green), 16,8); 
  //Render 
  Page.Response.Clear(); 
  Page.Response.ContentType = "image/jpeg"; 
  objBitmap.Save(Page.Response.OutputStream, 
      System.Drawing.Imaging.ImageFormat.Jpeg); 
  //Tidy up 
  objGraphics.Dispose(); 
  objBitmap.Dispose(); 
}

I am not sure of the implications of writing directly to the Page class from within the Render method, but this works at runtime. If anyone knows of a method that works at design time, please let me know.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Andrew S Traub

Web Developer

United States United States

Member



Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralLimited to one image Pinmembermohaaron10:50 17 Aug '06  
QuestionRendering on the fly in UserControl? PinmemberPhoenix 2 You11:09 30 Dec '05  
The response.outputstream code works great for my webform application. but when i translate my code into web user control, the response.outputstream wipes out everything on the main page. Has anyone done this?
 
Here's my scenario:
WebForm1.ascx --> has come code that generates an image and an <img src="WebForm2.aspx"> tag
WebForm2.ascx --> does nothing but renders the image to screen using Response.outputstream
 
I am generating an image on the fly inside a user control.
 
phx
GeneralI got one wich uses custom image control and no .aspx files PinmemberFaiz VP8:53 9 Nov '05  
GeneralShow images WITHOUT using Response.OutputStream PinsussRangaraya14:20 26 Feb '04  
GeneralDemo Pinmemberarody13:44 9 Nov '03  
GeneralI'm not convinced.... PinmemberPaul B3:30 25 Mar '03  
GeneralRe: I'm not convinced.... PinmemberAndrew S Traub8:10 19 May '03  
GeneralRe: I'm not convinced.... Pinmembergerbenvl9:48 28 Dec '03  
GeneralRe: I'm not convinced.... PinmemberAndrew S Traub4:31 29 Dec '03  
GeneralRe: I'm not convinced.... PinmemberLisaStar11:40 11 Apr '05  
Generalcant get to work Pinmemberlanzerp20:39 23 Mar '03  
GeneralRe: cant get to work PinmemberAndrew S Traub8:09 19 May '03  
GeneralRe: cant get to work PinmemberShaman5:01 25 Nov '03  
GeneralRe: cant get to work Pinmembergerbenvl11:56 26 Dec '03  
GeneralAlternatives and Concerns PineditorHeath Stewart18:07 23 Mar '03  
GeneralHey Andrew PineditorNick Parker4:01 22 Mar '03  
GeneralRe: Hey Andrew PinmemberAndrew S Traub10:01 22 Mar '03  
GeneralRe: Hey Andrew PineditorNick Parker11:25 22 Mar '03  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web02 | 2.5.120529.1 | Last Updated 24 Mar 2003
Article Copyright 2003 by Andrew S Traub
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid