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

c#中的简单条形图

我不会使用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