本节我们将通过gid+绘制图形。便于实例模拟,我们采用数组数据来模拟公司业务数据。
新建一个web窗体,命名为gdi_sample2.aspx,逻辑代码如下:
'-----code begin-----
imports system.drawing
imports system.drawing.bitmap
imports system.drawing.graphics
imports system.drawing.imaging
public class gdi_sample4
inherits system.web.ui.page
#region " web 窗体设计器生成的代码 "
'此处省略窗体设计器生成的代码
#end region
'定义公共数组变量,用来存放模拟公司销售额数据
public data(5, 1) as string
private sub page_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load
'在此处放置初始化页的用户代码
dim i as int16
dim objbitmap as bitmap
objbitmap = new bitmap(400, 300)
'声明graphics对象
dim objgraphics as graphics
'指定画布
objgraphics = graphics.fromimage(objbitmap)
'设置背景色为白色
objgraphics.clear(color.white)
'画出图形边框,注意留出划线的空间,为一个象素
objgraphics.drawrectangle(pens.black, 1, 1, 398, 298)
'生成表头文字
objgraphics.drawstring("本公司上半年营业额统计图", new font("宋体", 16, fontstyle.bold), brushes.black, new pointf(60, 5))
'获取模拟数据
getdata()
dim monthcolor as pointf = new pointf(260, 40)
dim fontinfor as pointf = new pointf(285, 36)
'画出示意颜色图例
for i = 0 to 5
'画出填充矩形。
objgraphics.fillrectangle(new solidbrush(getcolor(i)), monthcolor.x, monthcolor.y, 20, 10)
'画出矩形边框。
objgraphics.drawrectangle(pens.black, monthcolor.x, monthcolor.y, 20, 10)
'画出图例说明文字--data(i, 0)
objgraphics.drawstring(data(i, 0), new font("宋体", 10), brushes.black, fontinfor)
'移动坐标位置,只移动y方向的值即可。
monthcolor.y += 15
fontinfor.y += 15
next i
'遍历数据源的每一项数据,并根据数据的大小画出矩形图(即柱形图的柱)。
for i = 0 to 5
'画出填充矩形。
objgraphics.fillrectangle(new solidbrush(getcolor(i)), (i * 25) + 35, 270 - cint(data(i, 1)), 15, cint(data(i, 1)))
'画出矩形边框线。
objgraphics.drawrectangle(pens.black, (i * 25) + 35, 270 - cint(data(i, 1)), 15, cint(data(i, 1)))
next
'画出示意坐标
objgraphics.drawline(new pen(color.blue, 1), 10, 0, 10, 320)
objgraphics.drawline(new pen(color.blue, 1), 10, 270, 200, 270)
'在示意坐标上添加数值标志,注意坐标的计算
for i = 0 to 5
objgraphics.drawline(new pen(color.blue, 1), 10, i * 50 + 20, 20, i * 50 + 20)
objgraphics.drawstring((250 - i * 50).tostring, new font("宋体", 10), brushes.black, 12, i * 50 + 8)
next
' 统计总销售额
dim scount as integer
for i = 0 to 5
scount += cint(data(i, 1))
next
'定义画出扇形角度变量
dim scg as single = 0
dim stg as single = 0
for i = 0 to 5
'计算当前角度值:当月销售额 / 总销售额 * 360,得到饼图中当月所占的角度大小。
scg = cint(data(i, 1)) / scount * 360
新闻热点
疑难解答
图片精选