c#中的简单条形图
本文关键字:条形图 简单 | 更新日期: 2023-09-27 18:14:44
我想问一下是否有可能使用MScharts创建两个简单的酒吧,看起来像这样:
截屏http://img16.imageshack.us/img16/4413/desktoptf.png
我想要一个上面图像的精确副本,所以没有图表或网格,只有像这样的两个简单的条。
另一件事是,最大值由条形图两端的小红色条纹表示,并且应该保持在那里,直到超过最大值。
这个想法是,我正在读取应该动态应用于栏的实时数据(4个值)。
有人知道怎么做吗?我目前正在使用MScharts插件(或者使用c#的绘制功能而不是MScharts会更好吗?)。
提前感谢。
编辑:好的,这是我想到的:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
bool k = false;
Random random = new Random();
int max = 0;
protected override void OnPaint(PaintEventArgs paintEvnt)
{
int i = 30;
Graphics gfx = paintEvnt.Graphics;
Pen myPen = new Pen(Color.Black);
for (i = 40; i < 640; i = i + 100)
{
gfx.DrawLine(myPen, i, 25, i, 35);
}
for (i = 40; i < 640; i = i + 100)
{
gfx.DrawLine(myPen, i, 55, i, 65);
}
Color brushColor = Color.FromArgb(0, 0, 255);
SolidBrush myBrush = new SolidBrush(brushColor);
int randomnumber = random.Next(0, 601);
gfx.FillRectangle(myBrush, 33, 33, randomnumber, 25);
if (randomnumber + 33 > max)
{
max = randomnumber + 33;
gfx.DrawLine(new Pen(Color.Red, 3), max, 30, max, 60);
}
else
{
gfx.DrawLine(new Pen(Color.Red, 3), max, 30, max, 60);
}
}
private void button1_Click(object sender, EventArgs e)
{
this.Invalidate();
}
}
}
它看起来是这样的:http://img411.imageshack.us/img411/5646/graphmj.jpg每次我按下按钮,都会生成新的随机数据并覆盖旧的图表。然而,还有一个问题。红色指示器应该只有在超过最大值时才会增加,这就是我试图在OnPaint方法中使用if-query实现的,但它有时仍然会构成随机值并完全关闭,超过旧值,即使新的随机值甚至更低。这没有意义。
以下是项目,以防有人想尝试和帮助我:http://up.k10x.net/ambglolrngulg/LevelMeter.zip我不会使用mschart。我会写一个控件来做bar和max指示器然后在另一个用户控件上使用那个来获取标签之类的东西。上次我看到。net中没有形状控制,所以这可能会给你一些线索。开源。net形状控件
提供:http://www.dotnetlines.com/Blogs/tabid/85/EntryId/44/Create-a-simple-Column-Chart-Bar-Chart-in-ASP-NET-using-C.aspx
在web.config
中添加以下httphandler<httpHandlers>
<add path="ChartImg.axd"
verb="GET,HEAD,POST"
type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler,
System.Web.DataVisualization,
Version=4.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"
validate="false"/>
</httpHandlers>
页面设计
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register TagPrefix="asp" Namespace="System.Web.UI.DataVisualization.Charting"
Assembly="System.Web.DataVisualization,
Version=4.0.0.0,
Culture=neutral,
PublicKeyToken=31bf3856ad364e35" %>
//Place the chart control on the page as follows.
<asp:Chart ID="Chart1" runat="server" Height="300px" Width="600px">
<Titles>
<asp:Title ShadowOffset="3" Name="Student Marks" />
</Titles>
<Legends>
<asp:Legend Alignment="Center" Docking="Bottom" IsTextAutoFit="False" Name="Legend"
LegendStyle="Row" />
</Legends>
<Series>
<asp:Series Name="Legend" />
</Series>
<ChartAreas>
<asp:ChartArea Name="studentChartArea" BorderWidth="0" />
</ChartAreas>
</asp:Chart>
在CodeBehind中编写以下代码,用于在chart控件
中填充图表protected void Page_Load(object sender, EventArgs e)
{
string[] xAxis = { "Student1", "Student2", "Student3", "Student4", "Student5", "Student6" };
double[] yAxis = { 39, 67, 96, 86, 47, 98 };
Chart1.Series["Legend"].Points.DataBindXY(xAxis, yAxis);
Chart1.Series["Legend"].Points[0].Color = Color.Black;
Chart1.Series["Legend"].Points[1].Color = Color.Bisque;
Chart1.Series["Legend"].Points[2].Color = Color.Blue;
Chart1.Series["Legend"].Points[3].Color = Color.BlueViolet;
Chart1.Series["Legend"].Points[4].Color = Color.Brown;
Chart1.Series["Legend"].Points[5].Color = Color.CornflowerBlue;
Chart1.Series["Legend"].ChartType = SeriesChartType.Column;
Chart1.ChartAreas["studentChartArea"].Area3DStyle.Enable3D = true;
}
- 查看更多信息:http://www.dotnetlines.com/Blogs/tabid/85/EntryId/44/Create-a-simple-Column-Chart-Bar-Chart-in-ASP-NET-using-C.aspx