怎么用asp.net作图?

shaoxun2002 2002-06-07 05:08:15
怎样用asp.net在网页中作图,最好有例子或代码。
...全文
204 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaoxun2002 2002-06-09
  • 打赏
  • 举报
回复
能将两个<img>重叠在一起合成一个新的<img>吗?并保存在文件里。
孟子E章 2002-06-08
  • 打赏
  • 举报
回复
.NET也提供了的作矢量图的类
linhaibo 2002-06-08
  • 打赏
  • 举报
回复
和使用 OWC 控件类似
但生成的图片是静态的.非矢量的,
linhaibo 2002-06-08
  • 打赏
  • 举报
回复
和使用 OWC 控件类似
但生成的图片是静态的.非矢量的,
possible_Y 2002-06-07
  • 打赏
  • 举报
回复
<%@ Page Language="C#" %>
<%@import namespace="System.Data"%>
<%@import namespace="System.Data.OleDb"%>
<%@import namespace="System.Drawing"%>
<%@import namespace="System.Drawing.Imaging"%>
<script language="c#" runat="server">
public void page_load(Object obj,EventArgs e)
{
//把连接字符串存于变量中
String curDir = Server.MapPath("mess.mdb");
String strconn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + curDir;
OleDbConnection conn=new OleDbConnection(strconn);
conn.Open();
string sql="select * from title";
OleDbCommand cmd=new OleDbCommand(sql,conn);
DataSet ds=new DataSet();
OleDbDataAdapter adapter1=new OleDbDataAdapter(cmd);
adapter1.Fill(ds);
conn.Close();
float total=0.0f,tmp;
int iloop;
for(iloop=0;iloop<ds.Tables[0].Rows.Count;iloop++)
{
tmp=Convert.ToSingle(ds.Tables[0].Rows[iloop]["point"]);//转换成单精度,投票

不可能投半票。也可写成Convert.ToInt32
total+=tmp;
}
//Response.Write(Convert.ToString(total));

Font fontlegend=new Font("verdana",9),fonttitle=new

Font("verdana",10,FontStyle.Bold);//设置字体
//fonttitle为主标题的字体

int width=230;//白色背景宽
const int bufferspace=15;
int legendheight=fontlegend.Height*(ds.Tables[0].Rows.Count+1)+bufferspace;
int titleheight = fonttitle.Height + bufferspace;
int height = width + legendheight + titleheight + bufferspace;//白色背景高
int pieheight = width;
Rectangle pierect=new Rectangle(0,titleheight,width,pieheight);

//加上各种随机色
ArrayList colors = new ArrayList();
Random rnd = new Random();
for (iloop = 0; iloop < ds.Tables[0].Rows.Count; iloop++)
colors.Add(new SolidBrush(Color.FromArgb(rnd.Next(255), rnd.Next(255),

rnd.Next(255))));

Bitmap objbitmap=new Bitmap(width,height);//创建一个bitmap实例
//Bitmap objbitmap=new Bitmap(230,500);//创建一个bitmap实例
Graphics objgraphics=Graphics.FromImage(objbitmap);

objgraphics.FillRectangle(new SolidBrush(Color.White), 0, 0, width, height);//画一

个白色背景
objgraphics.FillRectangle(new SolidBrush(Color.LightYellow), pierect);//画一个亮黄

色背景
//以下为画饼图(有几行row画几个)
float currentdegree=0.0f;
for (iloop = 0; iloop < ds.Tables[0].Rows.Count; iloop++)
{
objgraphics.FillPie((SolidBrush) colors[iloop], pierect, currentdegree,
Convert.ToSingle(ds.Tables[0].Rows[iloop]["point"]) / total * 360);
currentdegree += Convert.ToSingle(ds.Tables[0].Rows[iloop]["point"]) / total *

360;
}
//---以下为生成主标题
SolidBrush blackbrush=new SolidBrush(Color.Black);
string title="你对该网站的满意程度:";
StringFormat stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Center;
stringFormat.LineAlignment = StringAlignment.Center;

objgraphics.DrawString(title, fonttitle, blackbrush,
new Rectangle(0, 0, width, titleheight), stringFormat);
//列出各字段与得票数
objgraphics.DrawRectangle(new Pen(Color.Black, 2), 0, height - legendheight, width,

legendheight);
for (iloop = 0; iloop < ds.Tables[0].Rows.Count; iloop++)
{
objgraphics.FillRectangle((SolidBrush) colors[iloop], 5, height -

legendheight + fontlegend.Height * iloop + 5, 10, 10);
objgraphics.DrawString(((String) ds.Tables[0].Rows[iloop]["title"]) + " - " +

Convert.ToString(ds.Tables[0].Rows[iloop]["point"]), fontlegend, blackbrush,
20, height - legendheight + fontlegend.Height * iloop + 1);
}
//
objgraphics.DrawString("总票数是:"+Convert.ToString(total),fontlegend,blackbrush,

5, height - fontlegend.Height );
//图像总的高度-一行字体的高度,即是最底行的一行字体高度(height - fontlegend.Height

)
Response.ContentType="image/jpeg";
objbitmap.Save(Response.OutputStream,ImageFormat.Jpeg);
//objbitmap.Save("myyyyyyyyyyy.jpg", ImageFormat.Jpeg);//输出到文件

objgraphics.Dispose();
objbitmap.Dispose();
}
</script>

其中mess.mdb中有表title。含2个字段:
title point
比较满意 213
不满意 244
非常满意 456
还凑合 345
孟子E章 2002-06-07
  • 打赏
  • 举报
回复
是的。.net类库是不分语言的
shaoxun2002 2002-06-07
  • 打赏
  • 举报
回复
在c#里也用Graphics类作图吗?
孟子E章 2002-06-07
  • 打赏
  • 举报
回复
是.net提供的作图类
emu 2002-06-07
  • 打赏
  • 举报
回复
哇赛,好复杂,孟版主给讲一下原理嘛,是服务器自动根据数据生成了位图吗?
孟子E章 2002-06-07
  • 打赏
  • 举报
回复
第一步:创建一个新的ASP.NET项目。
打开Microsoft Visual Studio .NET,点击“文件(File)”-“新建(New)”-“项目(Project)”,打开“新建项目(New Project)”对话框,在“项目类型(Project Types)”里选择“Visual Basic 项目(Projects)”,在“模板(Templates)”里选择“ASP.NET应用程序(Web Application)”,在应用程序地址里输入:http://localhost/aspCharts,点击“确定(OK)”按钮,Microsoft Visual Studio .NET将会自动在wwwroot目录下创建一个名为aspCharts的Web工程。
第二步:为默认起始页编写代码(WebForm1.aspx)。
我们要在这个页面里显示动态创建的图形,打开WebForm1.aspx的标签页的“HTML”视图,在Microsoft Visual Studio .NET自动创建的<form id="Form1" method="post" runat="server"></form>之间插入下面的代码:
<table width="100%" border="0">
<tr>
<td align="center">
<img src="WebForm2.aspx">
</td>
</tr>
<tr>
<td height="20" align="middle">
ASP.NET 中动态创建图形范例
</td>
</tr>
</table>

第三步:添加名为Charts.aspx的Web窗体页。
打开“解决方案资源管理器(Solution Explorer)”,在“aspCharts项目”上点击右键,选择“添加(Add)”-“添加新项(Add New Item)”,弹出“添加新项(Add New Item)”对话框,在右边的“模板”里选择“Web 窗体”,在底下的名字输入框了输入“Charts.aspx”,点击“打开”按钮。
第四步:为“Charts.aspx”Web 窗体页添加代码。
在“Charts.aspx”窗体上点击右键,选择“查看代码(View Code)”,在代码的第一行添加下面二行:

Imports System.Drawing
Imports System.Drawing.Imaging

然后,依次添加下面的代码,代码的含义已经在注释中做了说明:

'创建页面事件
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'声明整型变量i,
Dim i As Integer

'创建一个位图对象,用来放置柱形图,我们可以把它看作是一块画布。这里宽、高分别是400和200,当然,你也可以根据需要把它们做为参数来进行传递。
Dim objBitMap As New Bitmap(400, 200)

'声明一个图形对象,在上面创建的位图上画图。
Dim objGraphics As Graphics

'从指定的objBitMap对象创建新图形对象objGraphics。
objGraphics = Graphics.FromImage(objBitMap)

'清除整个绘图面并以指定白色为背景色进行填充。
objGraphics.Clear(Color.White)

'创建一个数据源,这里我们为了方便其间,采用数组做为柱形图和饼图的数据源。
Dim arrValues(5) As Integer
arrValues(0) = 100
arrValues(1) = 135
arrValues(2) = 115
arrValues(3) = 125
arrValues(4) = 75
arrValues(5) = 120

'定义数组对象,用来描述图例。
Dim arrValueNames(5) As String
arrValueNames(0) = "一月"
arrValueNames(1) = "二月"
arrValueNames(2) = "三月"
arrValueNames(3) = "四月"
arrValueNames(4) = "五月"
arrValueNames(5) = "六月"

'在画布(objBitMap对象)的坐标5,5处,用指定的Brush(画笔)对象和Font(字体)对象绘制统计图标题。
objGraphics.DrawString(" X 公司上半年销售情况", New Font("宋体", 16), Brushes.Black, New PointF(5, 5))

'创建图例文字。
Dim symbolLeg As PointF = New PointF(335, 20)
Dim descLeg As PointF = New PointF(360, 16)

'画出图例。利用objGraphics图形对象的三个方法画出图例:FillRectangle()方法画出填充矩形,DrawRectangle()方法画出矩形的边框,DrawString()方法画出说明文字。这三个图形对象的方法在 .NET 框架类库类库中均已重载,可以很方便根据不同的参数来画出图形。
For i = 0 To arrValueNames.Length - 1

'画出填充矩形。
objGraphics.FillRectangle(New SolidBrush(GetColor(i)), symbolLeg.X, symbolLeg.Y, 20, 10)

'画出矩形边框。
objGraphics.DrawRectangle(Pens.Black, symbolLeg.X, symbolLeg.Y, 20, 10)

'画出图例说明文字。
objGraphics.DrawString(arrValueNames(i).ToString, New Font("宋体", 10), Brushes.Black, descLeg)

'移动坐标位置,只移动Y方向的值即可。
symbolLeg.Y += 15
descLeg.Y += 15

Next i

'遍历数据源的每一项数据,并根据数据的大小画出矩形图(即柱形图的柱)。

For i = 0 To arrValues.Length - 1

'画出填充矩形。
objGraphics.FillRectangle(New SolidBrush(GetColor(i)), (i * 35) + 15, 200 - arrValues(i), 20, arrValues(i) + 5)
'画出矩形边框线。
objGraphics.DrawRectangle(Pens.Black, (i * 35) + 15, 200 - arrValues(i), 20, arrValues(i) + 5)

Next

'下面画饼图。先定义两个变量,代表当前角度和总角度,以便于画图时将角度进行按比例换算。
Dim sglCurrentAngle As Single = 0
Dim sglTotalAngle As Single = 0

'定义一个变量,代表总的销售额。
Dim sglTotalValues As Single = 0

'计算总销售额。
For i = 0 To arrValues.Length - 1
sglTotalValues += arrValues(i)
Next

i = 0

'遍历数据源的每一项数据,并根据数据的大小画出饼图。图形对象的FillPie()方法和DrawPie()在.NET 框架类库中已重载。
For i = 0 To arrValues.Length - 1

'计算当前角度值:当月销售额 / 总销售额 * 360,得到饼图中当月所占的角度大小。
sglCurrentAngle = arrValues(i) / sglTotalValues * 360

'画出填充圆弧。
objGraphics.FillPie(New SolidBrush(GetColor(i)), 220, 95, 100, 100, sglTotalAngle, sglCurrentAngle)

'画出圆弧线。
objGraphics.DrawPie(Pens.Black, 220, 95, 100, 100, sglTotalAngle, sglCurrentAngle)

'把当前圆弧角度加到总角度上。
sglTotalAngle += sglCurrentAngle

Next i

'将objGraphics对象以指定的图形格式(这里是Gif)保存到指定的Stream对象,并输出到客户端。
objBitMap.Save(Response.OutputStream, ImageFormat.Gif)

End Sub

'下面这段函数用来根据不同的月份返回不同的颜色值。
Private Function GetColor(ByVal itemIndex As Integer) As Color

Dim objColor As Color

Select Case itemIndex
Case 0
objColor = Color.Blue
Case 1
objColor = Color.Red
Case 2
objColor = Color.Yellow
Case 3
objColor = Color.Purple
Case 4
objColor = Color.Orange
Case 5
objColor = Color.Brown
Case 6
objColor = Color.Gray
Case 7
objColor = Color.Maroon
Case 8
objColor = Color.Maroon
Case Else
objColor = Color.Blue
End Select

Return objColor

End Function
saucer 2002-06-07
  • 打赏
  • 举报
回复
Create Snazzy Web Charts and Graphics On the Fly with the .NET Framework
http://msdn.microsoft.com/msdnmag/issues/02/02/ASPDraw/ASPDraw.asp
emu 2002-06-07
  • 打赏
  • 举报
回复
听说过asp.net可以,没有碰过,不知它是怎么实现的。我都是用vml画的:
http://go2.163.com/stonelf/tools/vml.zip
辅助软件 aspx/asp代码生成器 语言规范 C# Language Specification 1.2(C#语言规范1.2).doc C# Language Specification 2.0(C#语言规范2.0).doc 源码教程 ASP.NET编程技术与交互式网页设计 asp.net亲密接触_带源码 C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他议题.htm.txt 07_接口的执行.htm.txt 08_集合.htm.txt 09_运算符重载.htm.txt 10_阴影和深度复制.htm.txt 11_事件基础.htm.txt 12_事件进阶.htm.txt 13_读写Txt文件.htm.txt 14_StatusBar控件.htm.txt 15_自定义控件.htm.txt 16_使用打开保存文件对话框.htm.txt 17_图形绘制基础.htm.txt 18_图形绘制进阶-线条、字体.htm.txt 19_图形绘制进阶-图像(双倍缓冲).htm.txt 20_Windows应用程序安装部署概念.htm.txt 21_使用文件基础.htm.txt 22_使用文件高级.htm.txt 23_串行化和并行化.htm.txt 技术资料 ACCESS数据库操作类.txt ASP.NET常用代码.txt asp.net常用函数表.txt Asp.net的身份验证.txt ASP导出Excel数据的四种方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet对象.txt DotNET WinForm FAQ 16个.txt excel打印.txt EXCEL导出.txt EXCEL中合并单元格.txt mail.txt NET在RichTextBox控件加入图片(类似QQ).txt send.txt SQL储存过程等的解密.txt VisualC#打造“浏览器”.txt vs2005常用快捷键.txt webcontrol和pagelet.txt win2003中配置msdtc.txt word导出.txt 保证应用程序只有一个实例运行.txt 编辑字段中的word文件.txt 编码标准.txt 播放声音.txt 捕捉DataGrid的双击事件(C#版本).txt 不显示窗口后台运行程序.txt 储存过程.txt 处理“进程性能计数器被禁用”的错误.txt 串口操作.txt 打开word文件.txt 打造“浏览器”.txt 带图标和自定义颜色的ListBox.txt 得到当前数据库中所有用户表信息.txt 读取、设置系统时间日期.txt 读写注册表.txt 对过程进行加密.txt 二进制数据保存.txt 二进制数据字段的更新.txt 分页及动态创建列的控件 .txt 改变Windows服务的启动顺序.txt 各进制之间的转换.txt 给图片添加版权信息.txt 关于拖放操作.txt 关于在WinForm里用HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法.txt 画带阴影效果的文字.txt 环境信息.txt 获得光标在多行textbox中的行与列的函数.txt 计算控件中文字所占的宽度.txt 加半透明图片水印.txt 将控件放到datagrid中以及修改列宽.txt 截取系统消息.txt 解决VS.NET使用中属性框不显示的问题.txt 里的InputBox.txt 模拟鼠标和键盘操作.txt 取CPU的序列号.txt 如何:在VisualC#.NET中建立一个平滑的进度条.txt 如何得到网卡号.txt 如何调用WindowsAPI的要点.txt 如何控制输入法.txt 如何利用GDI作图解决异或问题.txt 如何取硬件标志.txt 如何让应用程序只有一个实例运行.txt 如何如何插入照片到Excel.txt 如何识别键盘左右的shift,Ctrl或Alt键.txt 如何水晶按钮的程序生成.txt 如何为DataGrid添加下拉列表框.txt 如何用C#在Excel中生成图表?.txt 如何用程序实现键盘和鼠标的模拟?.txt 如何与资源管理器互动剪切、拷贝、粘贴文件.txt 深入理解C#编程中的组件-事件-委托.txt 生成透明的GIF图片 .txt 生成压缩图片时的2种方法.txt 使用C#返回系统特殊路径.txt 使用VisualC#.NET检查Windows版本.txt 使用Win32和其他库.txt 使用自己画的光标.txt 数据绑定.txt 水晶报表使用winform.txt 水印.txt 特殊文件夹路径.txt 同一解决方案中一个项目的xml注释在另一个项目中不能智能提示显示这些注释的解决方法.txt 图像读取.txt 无标题窗口的拖放.txt 下面的5行代码完成了从局域网中找出所有的机器.txt 显示DataGrid序号的一个适用的方法.txt 用C#快速往Excel写数据.txt 用C#来捕获屏幕.txt 用C#做ScreenSaver.txt 用imgscan.ocx来扫描图像.txt 用word填充表格.txt 用户登录组合控件.txt 在.NET中得到计算机硬件信息的一些功能.txt 在MapX中响应滚轮放大缩小地图.txt 在两个ASP.NET页面之间传递值.txt 在如何利用SharpZipLib进行文件的压缩和解压缩.txt 怎样打开关闭CDROM.txt 怎样检测网络中的电脑是否有安装SQL2000.txt 怎样写一个存储过程类来实现如何对存储过程的调用?.txt 直接拉入图片文件到程序窗口中打开.txt 指定Web服务器运行的不是ASP.NET1.1版.txt 字符串加密.txt 字幕显示屏幕保护.txt 自己动手用c#写控件.txt C#试题 简答题.txt 填空题.txt 问答题1.txt 问答题2.txt 选择题.txt 综合题.txt
语言规范 C# Language Specification 1.2(C#语言规范1.2).doc C# Language Specification 2.0(C#语言规范2.0).doc 源码教程 ASP.NET编程技术与交互式网页设计 asp.net亲密接触_带源码 C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他议题.htm.txt 07_接口的执行.htm.txt 08_集合.htm.txt 09_运算符重载.htm.txt 10_阴影和深度复制.htm.txt 11_事件基础.htm.txt 12_事件进阶.htm.txt 13_读写Txt文件.htm.txt 14_StatusBar控件.htm.txt 15_自定义控件.htm.txt 16_使用打开保存文件对话框.htm.txt 17_图形绘制基础.htm.txt 18_图形绘制进阶-线条、字体.htm.txt 19_图形绘制进阶-图像(双倍缓冲).htm.txt 20_Windows应用程序安装部署概念.htm.txt 21_使用文件基础.htm.txt 22_使用文件高级.htm.txt 23_串行化和并行化.htm.txt 技术资料 ACCESS数据库操作类.txt ASP.NET常用代码.txt asp.net常用函数表.txt Asp.net的身份验证.txt ASP导出Excel数据的四种方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet对象.txt DotNET WinForm FAQ 16个.txt excel打印.txt EXCEL导出.txt EXCEL中合并单元格.txt mail.txt NET在RichTextBox控件加入图片(类似QQ).txt send.txt SQL储存过程等的解密.txt VisualC#打造“浏览器”.txt vs2005常用快捷键.txt webcontrol和pagelet.txt win2003中配置msdtc.txt word导出.txt 保证应用程序只有一个实例运行.txt 编辑字段中的word文件.txt 编码标准.txt 播放声音.txt 捕捉DataGrid的双击事件(C#版本).txt 不显示窗口后台运行程序.txt 储存过程.txt 处理“进程性能计数器被禁用”的错误.txt 串口操作.txt 打开word文件.txt 打造“浏览器”.txt 带图标和自定义颜色的ListBox.txt 得到当前数据库中所有用户表信息.txt 读取、设置系统时间日期.txt 读写注册表.txt 对过程进行加密.txt 二进制数据保存.txt 二进制数据字段的更新.txt 分页及动态创建列的控件 .txt 改变Windows服务的启动顺序.txt 各进制之间的转换.txt 给图片添加版权信息.txt 关于拖放操作.txt 关于在WinForm里用HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法.txt 画带阴影效果的文字.txt 环境信息.txt 获得光标在多行textbox中的行与列的函数.txt 计算控件中文字所占的宽度.txt 加半透明图片水印.txt 将控件放到datagrid中以及修改列宽.txt 截取系统消息.txt 解决VS.NET使用中属性框不显示的问题.txt 里的InputBox.txt 模拟鼠标和键盘操作.txt 取CPU的序列号.txt 如何:在VisualC#.NET中建立一个平滑的进度条.txt 如何得到网卡号.txt 如何调用WindowsAPI的要点.txt 如何控制输入法.txt 如何利用GDI作图解决异或问题.txt 如何取硬件标志.txt 如何让应用程序只有一个实例运行.txt 如何如何插入照片到Excel.txt 如何识别键盘左右的shift,Ctrl或Alt键.txt 如何水晶按钮的程序生成.txt 如何为DataGrid添加下拉列表框.txt 如何用C#在Excel中生成图表?.txt 如何用程序实现键盘和鼠标的模拟?.txt 如何与资源管理器互动剪切、拷贝、粘贴文件.txt 深入理解C#编程中的组件-事件-委托.txt 生成透明的GIF图片 .txt 生成压缩图片时的2种方法.txt 使用C#返回系统特殊路径.txt 使用VisualC#.NET检查Windows版本.txt 使用Win32和其他库.txt 使用自己画的光标.txt 数据绑定.txt 水晶报表使用winform.txt 水印.txt 特殊文件夹路径.txt 同一解决方案中一个项目的xml注释在另一个项目中不能智能提示显示这些注释的解决方法.txt 图像读取.txt 无标题窗口的拖放.txt 下面的5行代码完成了从局域网中找出所有的机器.txt 显示DataGrid序号的一个适用的方法.txt 用C#快速往Excel写数据.txt 用C#来捕获屏幕.txt 用C#做ScreenSaver.txt 用imgscan.ocx来扫描图像.txt 用word填充表格.txt 用户登录组合控件.txt 在.NET中得到计算机硬件信息的一些功能.txt 在MapX中响应滚轮放大缩小地图.txt 在两个ASP.NET页面之间传递值.txt 在如何利用SharpZipLib进行文件的压缩和解压缩.txt 怎样打开关闭CDROM.txt 怎样检测网络中的电脑是否有安装SQL2000.txt 怎样写一个存储过程类来实现如何对存储过程的调用?.txt 直接拉入图片文件到程序窗口中打开.txt 指定Web服务器运行的不是ASP.NET1.1版.txt 字符串加密.txt 字幕显示屏幕保护.txt 自己动手用c#写控件.txt C#试题 简答题.txt 填空题.txt 问答题1.txt 问答题2.txt 选择题.txt 综合题.txt 辅助软件 aspx/asp代码生成器

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧