C# 中的简单条形图
我想问是否可以使用 MScharts 创建两个简单的条形图,如下所示:
Screen拍摄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/ambgolrngulg/LevelMeter.zip
我是真的很无能,因为代码对我来说看起来是正确的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
礼貌: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
页面设计
在 CodeBehind 中编写如下代码,用于填充 Chart 控件中的图表
Courtesy : http://www.dotnetlines.com/Blogs/tabid/85/EntryId/44/Create-a-simple-Column-Chart-Bar-Chart-in-ASP-NET-using-C.aspx
Add the following httphandler in web.config
Page design
Write the following code in CodeBehind for filling the chart in the Chart control
我不会为此使用 mschart。我会编写一个控件来执行条形和最大指示器,然后在另一个用户控件上使用它来获取标签和内容。
最后我发现 .net 中没有形状控制,因此这可能会给您一些线索。
开源 .net 形状控件
I wouldn't use mschart for that. I'd write a control to do the bar and max indicator and then use that on another usercontrol to get the labels and stuff.
Last I looked there's no shape control in .net, so this might give you a few clues.
open source .net shape control