我正在为我目前正在进行的项目构建内部网引擎,我想通过尽可能从代码生成标题图像来节省一些时间,但是,我会喜欢它来匹配我们的概念形象。
我想要实现的目标如下:
我的问题是我不是最简单的如何从代码创建它。我可以做绝对的基础知识,但那就是它。
当谈到渐变背景和文本上的阴影时,我开始堕落。我可以将文本定位在较大的标题图像上,所以如果不能生成我所拥有的精确渐变,那么我有一个解决方法,但我真正想要实现的是带有字体的文本和投影。
我说假设使用“非标准”字体是安全的,我只需要在网络服务器上安装它吗?
感谢您提前提供任何帮助。
答案 0 :(得分:4)
这是执行任务的代码,但它适用于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。