朧の.Netの足跡
問合せ先:support@oborodukiyo.info サイト内検索はこちら 
MSチャート Visual Studio 2010でチャートを3D表示にするには





>

チャートコントロールで3Dのグラフを表示するには、チャートエリアのArea3DStyle.Enable3Dをtrueにします。
ここで注意が必要な点が2点あります。
チャートコントロールにエリアを複数登録すれば、3Dと2Dの両方を別々の場所に同時に表示できることと、同一エリア内で サンプル画像の様に棒グラフを複数表示するときに重なるので、上の方のグラフを半透明にしてあげることです。
半透明にする方法は、サンプルプログラムのようにColor.FromArgb()メソッドを使用します。

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;
using System.Data.SqlClient;
//チャートコントロールを使うために必要
using System.Windows.Forms.DataVisualization.Charting;
namespace Chart_3D
{
    public partial class Form1 : Form
    {
        SqlDataAdapter sda = new SqlDataAdapter();
        DataTable dt = new DataTable();
        Chart chart1 = new Chart();
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            //ADO.NETでデータを取得する。
            SqlConnectionStringBuilder bldr = new SqlConnectionStringBuilder();
            bldr.DataSource = ".";
            bldr.InitialCatalog = "Northwind";
            bldr.IntegratedSecurity = true;
            using (SqlConnection conn = new SqlConnection(bldr.ConnectionString))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.Connection = conn;
                    cmd.CommandText = "SELECT OrderID,SUM(Quantity) AS Quantity,SUM(UnitPrice * Quantity) AS Proceeds FROM [Order Details] WHERE OrderID <= 10250 GROUP BY OrderID ORDER BY OrderID";
                    this.sda.SelectCommand = cmd;
                    this.sda.Fill(this.dt);
                }
            }
            //チャートエリアの追加の仕方
            ChartArea a1 = new ChartArea("main");
            //3Dに設定する
            a1.Area3DStyle.Enable3D = true;
            this.chart1.ChartAreas.Add(a1);
            //凡例のインスタンスを追加する
            this.chart1.Legends.Add(new Legend());
            //左側のY軸の設定
            Axis y1 = new Axis();
            //目盛の間隔を5に設定
            y1.Interval = 5.0d;
            //目盛の最小値を20に設定
            y1.Minimum = 20.0d;
            //目盛の最大値を70に設定
            y1.Maximum = 70.0d;
            //左のY軸になるように設定
            a1.AxisY = y1;
            //右側のY軸の設定
            Axis y2 = new Axis();
            //目盛の間隔を200に設定
            y2.Interval = 200.0d;
            //右のY軸になるように設定
            a1.AxisY2 = y2;
            //一つ目のグラフのインスタンス
            Series s1 = new Series();
            //凡例での名前を設定
            s1.LegendText = "売上数量";
            //グラフの種類を折れ線グラフに設定
            s1.ChartType = SeriesChartType.Column;
            //グラフの色を半透明の赤に指定
            s1.Color = Color.FromArgb(100, Color.Red);
            //X軸のデータ名を設定
            s1.XValueMember = "OrderID";
            //下側のX軸の目盛を使用する
            s1.XAxisType = AxisType.Primary;
            //Y軸のデータ名を設定
            s1.YValueMembers = "Quantity";
            //左側のY軸の目盛を使用する
            s1.YAxisType = AxisType.Primary;
            //使用するチャートエリアを指定する
            s1.ChartArea = "main";
            
            //二つ目のグラフのインスタンス
            Series s2 = new Series();
            //凡例での名前を設定
            s2.LegendText = "売上";
            //グラフの種類を棒グラフに設定
            s2.ChartType = SeriesChartType.Column;
            //グラフの色を指定
            s2.Color = Color.Blue;
            //X軸のデータ名を設定
            s2.XValueMember = "OrderID";
            //下側のX軸の目盛を使用する
            s2.XAxisType = AxisType.Primary;
            //Y軸のデータ名を設定
            s2.YValueMembers = "Proceeds";
            //右側のY軸の目盛を使用する
            s2.YAxisType = AxisType.Secondary;
            //使用するチャートエリアを指定する
            s2.ChartArea = "main";
            //グラフを追加するときに、後の方が上になる。
            this.chart1.Series.Add(s2);
            this.chart1.Series.Add(s1);
            //フォームにチャートコントロールを追加する
            this.Controls.Add(this.chart1);
            this.chart1.Dock = DockStyle.Fill;
            //データをセットする。
            this.chart1.DataSource = dt;
        }
    }
}








良いやや良い普通やや悪い悪い

投稿日時評価コメント