实现数据图表牛
2021-08-24 淮安装修公司
三.在中实现数据图表的完整源代码和运行界面:
在掌握了产生图片,在给图片上色、在图片上输出字符、和画线等基本操作过以后,充分的利用各种基本操作,就可以得的在中实现数据图表的完整程序,下图是运行界面:
图05:在中实现数据图表的运行界面
下面是在中实现数据图表的完整代码(px),如下:
<%@ Import Namespace = \"System\" %>
<%@ Import Namespace = \"awing\" %>
<%@ Import Namespace = \"awing2D\" %>
<%@ Import Namespace = \"aging\" %>
<script language = \"C#\" runat = \"server\" >
class LineChart
{
public Bitmap b ;
public string Title = \"在中实现数据图表\" ;
public ArrayList chartValues = new ArrayList ( ) ;
public float Xorigin = 0 , Yorigin = 0 ;
public float ScaleX , ScaleY ;
public float Xdivs = 2 , Ydivs = 2 ;
private int Width , Height ;
private Graphics g ;
private Page p ;
struct datapoint {
public float x ;
public float y ;
public bool valid ;
}
//初始化
public LineChart ( int myWidth , int myHeight , Page myPage ) {
Width = myWidth ; Height = myHeight ;
ScaleX = myWidth ; ScaleY = myHeight ;
b = new Bitmap ( myWidth , myHeight ) ;
g = Graphics . FromImage ( b ) ;
p = myPage ;
}
public void AddValue ( int x , int y ) {
datapoint myPoint ;
myPoint . x = x ;
myPoint . y = y ;
myPoint . valid = true ;
chartValues . Add ( myPoint ) ;
}
public void Draw ( ) {
int i ;
float x , y , x0 , y0 ;
string myLabel ;
Pen blackPen = new Pen ( Color . Blue , 2 ) ;
Brush blackBrush = new SolidBrush ( Color . Black ) ;
Font axesFont = new Font ( \"arial\" , 10 ) ;
//首先要创建图片的大小
p . Response . ContentType = \"image/jpeg\" ;
g . FillRectangle ( new SolidBrush ( Color . LightGreen ) , 0 , 0 , Width , Height ) ;
int ChartInset = 50 ;
int ChartWidth = Width - ( 2 * ChartInset ) ;
int ChartHeight = Height - ( 2 * ChartInset ) ;
g . DrawRectangle ( new Pen ( Color . Black , 1 ) , ChartInset , ChartInset , ChartWidth , ChartHeight ) ;
//写出图片上面的图片内容文字
g . DrawString ( Title , new Font ( \"arial\" , 14 ) , blackBrush , Width / 3 , 10 ) ;
//沿X坐标写入X标签
for ( i = 0 ; i <= Xdivs ; i++ ) {
x = ChartInset + ( i * ChartWidth ) / Xdivs ;
y = ChartHeight + ChartInset ;
myLabel = ( Xorigin + ( ScaleX * i / Xdivs ) ) . ToString ( ) ;
g . DrawString ( myLabel , axesFont , blackBrush , x - 4 , y + 10 ) ;
g . DrawLine ( blackPen , x , y + 2 , x , y - 2 ) ;
}
//沿Y坐标写入Y标签
for ( i = 0 ; i <= Ydivs ; i++ )
{
x = ChartInset ;
y = ChartHeight + ChartInset - ( i * ChartHeight / Ydivs ) ;
myLabel = ( Yorigin + ( ScaleY * i / Ydivs ) ) . ToString ( ) ;
g . DrawString ( myLabel , axesFont , blackBrush , 5 , y - 6 ) ;
g . DrawLine ( blackPen , x + 2 , y , x - 2 , y ) ;
}
g . RotateTransform ( 180 ) ;
g . TranslateTransform ( 0 , - Height ) ;
g . TranslateTransform ( - ChartInset , ChartInset ) ;
g . ScaleTransform ( - 1 , 1 ) ;
//画出图表中的数据
datapoint prevPoint = new datapoint ( ) ;
prevPoint . valid = false ;
foreach ( datapoint myPoint in chartValues ) {
if ( prevPoint . valid == true ) {
x0 = ChartWidth * ( prevPoint . x - Xorigin ) / ScaleX ;
y0 = ChartHeight * ( prevPoint . y - Yorigin ) / ScaleY ;
x = ChartWidth * ( myPoint . x - Xorigin ) / ScaleX ;
y = ChartHeight * ( myPoint . y - Yorigin ) / ScaleY ;
g . DrawLine ( blackPen , x0 , y0 , x , y ) ;
g . FillEllipse ( blackBrush , x0 - 2 , y0 - 2 , 4 , 4 ) ;
g . FillEllipse ( blackBrush , x - 2 , y - 2 , 4 , 4 ) ;
}
prevPoint = myPoint ;
}
//最后以图片形式来浏览
加速中国物流行业的发展。 b . Save ( p . Response . OutputStream , ImageFormat . Jpeg ) ;
}
~LineChart ( ) {
g . Dispose ( ) ;
b . Dispose ( ) ;
}
}
void Page_Load ( Object sender , EventArgs e )
{
LineChart c = new LineChart ( 640 , 480 , Page ) ;
c . Title = \" 在中实现数据图表\" ;
c . Xorigin = 0 ; c . ScaleX = 500 ; c . Xdivs = 5 ;
c . Yorigin = 0 ; c . ScaleY = 1000 ; c . Ydivs = 5 ;
c . AddValue ( 0 , 150 ) ;
c . AddValue ( 50 , 50 ) ;
c . AddValue ( 100 , 700 ) ;
c . AddValue ( 200 , 150 ) ;
c . AddValue ( 300 , 450 ) ;
c . AddValue ( 400 , 75 ) ;
c . AddValue ( 450 , 450 ) ;
c . AddValue ( 500 , 250 ) ;
c . Draw ( ) ;
}
</script >
四. 总结:
实现图表始终是互联编程的一个难点,本文介绍了在页面中如何实现数据图表,在没有什么好的组件可以利用的前提下,利用.Net FrameWork SDK GDI+中提供的各种用以操作图形的方法,这样的过程虽然有点烦杂,但对实现复杂的图表是非常有用的。希望本文不仅能够帮助读者解决在互联上的图表问题,也能够对读者的针对GDI+也有所了解。
查看本文来源
艾得辛能长期服用吗反流性胃炎怎么治疗
南通妇科哪好

-
-
冰丝带国家高山滑雪中心这些场馆让人着迷搭配
冰丝带、 国家高山滑雪中心这些场馆让人着迷2022年北京-张家口冬季奥运会简...
- 家装知识 2020-06-01
-
冰丝带国家高山滑雪中心这些场馆让人着迷搭配
-
-
蠢到爆麦蒂再炮轰神经刀我没有贬低总冠军搭配
蠢到爆!麦蒂再炮轰神经刀:我没有贬低总冠军麦蒂北京时间9月9日,据美媒...
- 家装知识 2020-06-01
-
蠢到爆麦蒂再炮轰神经刀我没有贬低总冠军搭配
-
-
观澜湖NBA篮球冬令营下月开营搭配
观澜湖NBA篮球冬令营下月开营北京时间1月4日消息,由观澜湖和NBA合作的篮球...
- 家装知识 2020-05-27
-
观澜湖NBA篮球冬令营下月开营搭配
-
-
p家居商紧抓装修旺季开展促销大戏p
家居商紧抓装修旺季 开展“促销大戏”导读:春季往往是装修旺季,首府各...
- 家装知识 2020-02-26
-
p家居商紧抓装修旺季开展促销大戏p
-
-
p中国卫浴市场有量变无质变p
中国卫浴市场有量变 无质变中国卫浴市场本土行业的数量和分布可谓是琳琅...
- 家装知识 2020-02-21
-
p中国卫浴市场有量变无质变p
-
-
p家具不宜细碎大户型设计可以这么玩p
家具不宜细碎 大户型设计可以这么玩对大户型的装修设计,应该跳出装修谈...
- 家装知识 2020-02-20
-
p家具不宜细碎大户型设计可以这么玩p