demo aspx<cc2:GeneratedImage ID="GeneratedImage1" runat="server"
ImageHandlerUrl="CachedTextToImageHandler.ashx" Height="36px">
<Parameters>
<cc2:ImageParameter Name="Message" Value="GeneratedImage Control Demos" />
<cc2:ImageParameter Name="Font" Value="Verdana" />
<cc2:ImageParameter Name="Bold" Value="True" />
<cc2:ImageParameter Name="FontSize" Value="28" />
<cc2:ImageParameter Name="FontColor" Value="#003399" />
<cc2:ImageParameter Name="BackColor" Value="#8CA8E6" />
<cc2:ImageParameter Name="HorizontalPadding" Value="0" />
</Parameters>
</cc2:GeneratedImage>
Protected Sub btnRefreshImage_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnRefreshImage.Click
CachedTextAsImageGenerator.Parameters.Clear()
CachedTextAsImageGenerator.Parameters.Add(New ImageParameter() With {.Name = "Message", .Value = txtMessage.Text})
CachedTextAsImageGenerator.Parameters.Add(New ImageParameter() With {.Name = "Font", .Value = ddlFont.SelectedValue})
CachedTextAsImageGenerator.Parameters.Add(New ImageParameter() With {.Name = "FontSize", .Value = ddlFontSize.SelectedValue})
CachedTextAsImageGenerator.Parameters.Add(New ImageParameter() With {.Name = "FontColor", .Value = ddlFontColor.SelectedValue})
CachedTextAsImageGenerator.Parameters.Add(New ImageParameter() With {.Name = "BackColor", .Value = ddlBackColor.SelectedValue})
CachedTextAsImageGenerator.Parameters.Add(New ImageParameter() With {.Name = "HorizontalPadding", .Value = ddlHorizontalPadding.SelectedValue})
CachedTextAsImageGenerator.Parameters.Add(New ImageParameter() With {.Name = "VerticalPadding", .Value = ddlVerticalPadding.SelectedValue})
End Sub
<%@ WebHandler Language="VB" Class="CachedTextToImageHandler" %>
Imports System
Imports System.Drawing
Imports System.Web
Imports Microsoft.Web
Public Class CachedTextToImageHandler
Inherits ImageHandler
Public Sub New()
MyBase.ContentType = Imaging.ImageFormat.Png
MyBase.EnableServerCache = True
End Sub
Public Overrides Function GenerateImage(ByVal parameters As System.Collections.Specialized.NameValueCollection) As Microsoft.Web.ImageInfo
Dim Message As String = "Message parameter not set!"
If Not String.IsNullOrEmpty(parameters("Message")) Then
Message = parameters("Message")
End If
Dim FontStyle As FontStyle = FontStyle.Regular
If Not String.IsNullOrEmpty(parameters("Bold")) Then
FontStyle = FontStyle Or Drawing.FontStyle.Bold
End If
If Not String.IsNullOrEmpty(parameters("Italic")) Then
FontStyle = FontStyle Or Drawing.FontStyle.Italic
End If
If Not String.IsNullOrEmpty(parameters("Underline")) Then
FontStyle = FontStyle Or Drawing.FontStyle.Underline
End If
If Not String.IsNullOrEmpty(parameters("Strikeout")) Then
FontStyle = FontStyle Or Drawing.FontStyle.Strikeout
End If
Dim Font As New Font("Verdana", 14)
If Not String.IsNullOrEmpty(parameters("Font")) AndAlso Not String.IsNullOrEmpty(parameters("FontSize")) Then
Font = New Font(parameters("Font"), Convert.ToInt32(parameters("FontSize")), FontStyle)
End If
Dim FontColor As Color = Color.Black
If Not String.IsNullOrEmpty(parameters("FontColor")) Then
FontColor = ColorTranslator.FromHtml(parameters("FontColor"))
End If
Dim BackColor As Color = Color.White
If Not String.IsNullOrEmpty(parameters("BackColor")) Then
BackColor = ColorTranslator.FromHtml(parameters("BackColor"))
End If
Dim HorizontalPadding As Integer = 5
If Not String.IsNullOrEmpty(parameters("HorizontalPadding")) Then
HorizontalPadding = Convert.ToInt32(parameters("HorizontalPadding"))
End If
Dim VerticalPadding As Integer = 5
If Not String.IsNullOrEmpty(parameters("VerticalPadding")) Then
VerticalPadding = Convert.ToInt32(parameters("VerticalPadding"))
End If
Return CreateImage(Message, Font, FontColor, BackColor, HorizontalPadding, VerticalPadding)
End Function
Protected Function CreateImage(ByVal Message As String, ByVal Font As Font, ByVal FontColor As Color, ByVal BackColor As Color, ByVal HorizontalPadding As Integer, ByVal VerticalPadding As Integer) As Microsoft.Web.ImageInfo
Dim sz As SizeF = Nothing
Using dummyBitmap As New Bitmap(1, 1)
Dim dummyGraphics As Graphics = Graphics.FromImage(dummyBitmap)
sz = dummyGraphics.MeasureString(Message, Font)
End Using
Dim realBitmap As New Bitmap(Convert.ToInt32(sz.Width) + HorizontalPadding * 2, Convert.ToInt32(sz.Height) + VerticalPadding * 2)
Dim realGraphics As Graphics = Graphics.FromImage(realBitmap)
realGraphics.Clear(BackColor)
realGraphics.DrawString(Message, Font, New SolidBrush(FontColor), HorizontalPadding, VerticalPadding)
Return New ImageInfo(realBitmap)
End Function
End Class