By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
434,741 Members | 1,973 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 434,741 IT Pros & Developers. It's quick & easy.

Bitmap draw image with background color "Black"?

P: 19
Hi, guys.
I have a program to draw bar/pie chart based on the data i hard coded in it. However, my image comes with "BLACK" background color. I don't know how to fix this. The code snippet is below:

chartGenerator.vb class:
Expand|Select|Wrap|Line Numbers
  1. Imports System.Drawing.Imaging
  2.  
  3. Public Class chartGenerator
  4.  
  5.     Private myImage As Bitmap
  6.     Private g As Graphics
  7.     Private p() As Integer = {1000000, 600000, 2500000, 80000}
  8.     Private towns() As String = {"A", "B", "C", "D"}
  9.  
  10.     Private myBrushes(4) As Brush
  11.     Private _width, _height As Integer
  12.     Private x_start, y_start As Decimal
  13.  
  14.  
  15.     Sub New(ByVal width As Integer, ByVal height As Integer)
  16.  
  17.         _width = width
  18.         _height = height
  19.         x_start = _width / 10
  20.         y_start = _height / 10
  21.  
  22.         ' The Bitmap is 300 pixels wide and 200 pixels high.
  23.         myImage = New Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppRgb)
  24.  
  25.         myImage.MakeTransparent(Color.White)
  26.  
  27.         ' Get the graphics context for the bitmap.
  28.         g = Graphics.FromImage(myImage)
  29.  
  30.         '   Create the brushes for drawing
  31.         myBrushes(0) = New SolidBrush(Color.Red)
  32.         myBrushes(1) = New SolidBrush(Color.Blue)
  33.         myBrushes(2) = New SolidBrush(Color.Yellow)
  34.  
  35.         myBrushes(3) = New SolidBrush(Color.Green)
  36.     End Sub
  37.  
  38.     Function makeBarChart() As Bitmap
  39.         '   Variables declaration
  40.         Dim i As Integer
  41.         Dim xInterval As Integer = _width / 5
  42.         Dim width As Integer = _width * 9 / 50
  43.         Dim height As Integer
  44.         Dim blackBrush As New SolidBrush(Color.Black)
  45.  
  46.         For i = 0 To p.Length - 1
  47.             height = (p(i) \ 10000) '   divide by 10000 to adjust barchart to height of Bitmap
  48.  
  49.             '   Draws the bar chart using specific colours
  50.             g.FillRectangle(myBrushes(i), xInterval * i + 50, 280 - height, width, height)
  51.  
  52.             '   label the barcharts
  53.             g.DrawString(towns(i), New Font("Verdana", 12, FontStyle.Bold), Brushes.Black, xInterval * i + 50 + (width / 3), 280 - height - 25)
  54.  
  55.             '   Draw the scale
  56.             g.DrawString(height, New Font("Verdana", 8, FontStyle.Bold), Brushes.Black, 0, 280 - height)
  57.  
  58.             '   Draw the axes
  59.             g.DrawLine(Pens.Brown, 40, 10, 40, 290)         '   y-axis
  60.             g.DrawLine(Pens.Brown, 20, 280, 490, 280)       '   x-axis
  61.         Next
  62.  
  63.         Return myImage
  64.         'myImage.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
  65.         'myImage.Dispose()
  66.     End Function
  67.  
  68.     Function makePieChart() As Bitmap
  69.         '   Variables declaration
  70.         Dim i As Integer
  71.         Dim total As Integer
  72.         Dim percentage As Double
  73.         Dim angleSoFar As Double = 0.0
  74.  
  75.         '   Caculates the total
  76.         For i = 0 To p.Length - 1
  77.             total += p(i)
  78.         Next
  79.  
  80.         '   Draws the pie chart
  81.         For i = 0 To p.Length - 1
  82.             percentage = p(i) / total * 360
  83.  
  84.             g.FillPie(myBrushes(i), 25, 25, 250, 250, CInt(angleSoFar), CInt(percentage))
  85.  
  86.             angleSoFar += percentage
  87.  
  88.             '   Draws the lengend
  89.             g.FillRectangle(myBrushes(i), 350, 25 + (i * 50), 25, 25)
  90.  
  91.             '   Label the towns
  92.             g.DrawString("Town " & towns(i), New Font("Verdana", 8, FontStyle.Bold), Brushes.Brown, 390, 25 + (i * 50) + 10)
  93.         Next
  94.  
  95.         Return myImage
  96.         'myImage.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
  97.         'myImage.Dispose()
  98.     End Function
  99. End Class
  100.  
  101.  

image.aspx.vb
Expand|Select|Wrap|Line Numbers
  1. Imports System.Drawing.Imaging
  2. Public Class image
  3.     Inherits System.Web.UI.Page
  4.  
  5.  
  6.     Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  7.         'Put user code to initialize the page here
  8.         Dim bitmap As Bitmap = CType(Session("image"), Bitmap)
  9.         bitmap.Save(Response.OutputStream, ImageFormat.Jpeg)
  10.         bitmap.Dispose()
  11.  
  12.     End Sub
  13.  
  14. End Class
  15.  
  16.  

testChart.aspx.vb
Expand|Select|Wrap|Line Numbers
  1. Public Class testChart
  2.     Inherits System.Web.UI.Page
  3.  
  4.  
  5.     Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  6.         'Put user code to initialize the page here
  7.  
  8.  
  9.  
  10.     End Sub
  11.  
  12.     Private chart As New chartGenerator(500, 300)
  13.  
  14.  
  15.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  16.  
  17.         Dim bitmap As Bitmap = chart.makeBarChart()
  18.         Session("image") = bitmap
  19.         Image1.ImageUrl = "image.aspx"
  20.  
  21.  
  22.     End Sub
  23.  
  24.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  25.         Dim bitmap As Bitmap = chart.makePieChart
  26.         Session("image") = bitmap
  27.         Image1.ImageUrl = "image.aspx"
  28.  
  29.     End Sub
  30. End Class
  31.  
  32.  

Anyone got idea of what happen out there?
Feb 7 '07 #1
Share this question for a faster answer!
Share on Google+

Post your reply

Sign in to post your reply or Sign up for a free account.