下面是执行任务的代码,但它是用于WinForms的。它不应该是很难将它应用到Web服务器:
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.windows.Forms
Public Class Form1
Sub Form1_Paint(ByVal sender As Object, _
ByVal e As PaintEventArgs) Handles MyBase.Paint
'g is the graphics context used to do the drawing.'
'gp is the path used to draw the circular gradient background'
'f is a generic font for drawing'
Using g = e.Graphics, gp As New GraphicsPath(), _
f As New Font(FontFamily.GenericSansSerif, 20, FontStyle.Bold)
'add the ellipse which will be used for the '
'circular gradient to the graphics path '
gp.AddEllipse(Me.ClientRectangle)
'then create a path gradient brush from the graphics path '
'created earlier to do the drawing on the background '
Using pgb As New PathGradientBrush(gp)
'set the center colour '
pgb.CenterColor = Color.White
'and then make all the colours around it a different colour '
pgb.SurroundColors = New Color() {Color.LightSteelBlue}
'fill a rectangle with the border colour of the gradient brush'
g.FillRectangle(Brushes.LightSteelBlue, Me.ClientRectangle)
'and then draw the gradient on top'
g.FillRectangle(pgb, Me.ClientRectangle)
'The secret to shadowed text is that the shadow is drawn first'
'and it is usually offset to the lower right of the main text '
'so we draw the shadow with a shade of grey '
g.DrawString("SOME TEXT", f, Brushes.Gray, 12, 12)
'after which we draw the text itself'
g.DrawString("SOME TEXT", f, Brushes.Black, 10, 10)
End Using
End Using
End Sub
End Class
上面的代码绘制到直接的形式。 如果您想提请图片代替,修改代码如下:
Function GetImage(....) As Image
Dim bmp As New Bitmap(200,200) 'you may use any size here'
Dim bmpRect As New Rectangle(Point.Empty, bmp.Size)
Using g = Graphics.FromImage(bmp), ...
.....
End Using
return bmp
End Sub
而且一定要使用bmpRect
而不是Me.ClientSize
。
我希望这可以工作,因为这完全是WinForms。
如果我决定不在图像中包含背景,我可以使文本图像透明吗? – LiamGu 2010-11-02 09:51:20
将位图位图声明的行更改为'Dim bmp As New Bitmap(200,200,Imaging.PixelFormat.Format32bppArgb)'并跳过背景绘制代码。 – 2010-11-02 10:53:14