Lia*_*mGu 1 vb.net asp.net image-manipulation .net-4.0
我目前正在为我目前正在进行的一个项目构建一个内联网引擎,我想通过尽可能从代码生成标题图像来节省自己一些时间,但是,我希望它能够符合我们的概念形象。
我想要实现的目标如下:

我的问题是我不知道如何从代码创建它。我可以做绝对的基础知识,但仅此而已。
当谈到渐变背景和文本上的阴影时,我开始崩溃。我可以将文本定位在较大的标题图像上,因此如果无法生成我在那里的精确渐变,那么我可以解决这个问题,但我真正想要实现的是带有字体的文本并放置阴影。
我想说可以安全地假设要使用“非标准”字体,我只需要将其安装在网络服务器上?
感谢您提前提供的任何帮助。
下面是执行该任务的代码,但它适用于 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
Run Code Online (Sandbox Code Playgroud)
上面的代码直接绘制到表单上。如果您想绘制图像,请按如下方式修改代码:
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
Run Code Online (Sandbox Code Playgroud)
并且一定要使用bmpRect而不是Me.ClientSize.
我希望这能起作用,因为这完全是 WinForms。
| 归档时间: |
|
| 查看次数: |
3036 次 |
| 最近记录: |