SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(True WinChart)

積層グラフや見映えのするグラフを作成する

PowerTools True WinChart for .NETコンポーネントでかんたんグラフ作成2

  • このエントリーをはてなブックマークに追加

グラフの種類を変えるには-リスト1

 グラフの種類を変えるには、ChartGroupクラスのChartTypeプロパティに、Chart2DTypeEnum列挙体のメンバを設定します。

Chart2DTypeEnum列挙体のメンバ
メンバ名 説明
Area エリアグラフ
Bar 棒グラフ
Bubble バブルチャート
Candle ローソク足チャート
Gantt ガントチャート
HiLo HiLo チャート
HiLoOpenClose HiLoOpenClose チャート
Histogram ヒストグラム
Pie 円グラフ
Polar ポーラチャート
Radar レーダーチャート
Step 階段グラフ
XYPlot プロットグラフ

 また、棒グラフやエリアグラフ、折れ線グラフなどで、グラフの向きを縦横に変えたい場合は、ChartAreaクラスのInvertedプロパティを使用します。このプロパティの値がFalseで縦、Trueで横方向のグラフになります。ただし、円グラフには影響を与えません。

.ChartArea.Inverted = False

 積層グラフ(積み重ねグラフ)にしたい場合は、ChartGroupクラスのStackedプロパティを使用します。プロパティ値がTrueで積層、Falseで通常のグラフになります。これも、円グラフには影響を与えません。

.ChartGroups(0).Stacked = True

 このプログラムでは、[実行]ボタンを押すと、ドロップダウンリストで選んだグラフに、Form2のグラフを変化させます。

 また、RadioButtonでグラフの縦横の向きを変更し、CheckBoxで積層グラフにするかしないかを決めるようにしています。

円グラフは系列ごとに作成される
円グラフは系列ごとに作成される
リスト1
Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
    With fm2.C1Chart1
        Select Case Me.ComboBox1.SelectedIndex
            Case 0
                .ChartGroups(0).ChartType = _
                    C1.Win.C1Chart.Chart2DTypeEnum.Bar
            Case 1
                .ChartGroups(0).ChartType = _
                    C1.Win.C1Chart.Chart2DTypeEnum.Pie
            Case 2
                .ChartGroups(0).ChartType = _
                    C1.Win.C1Chart.Chart2DTypeEnum.Area
            Case 3
                .ChartGroups(0).ChartType = _
                    C1.Win.C1Chart.Chart2DTypeEnum.XYPlot
        End Select

        If Me.RadioButton1.Checked Then
            .ChartArea.Inverted = False
        Else
            .ChartArea.Inverted = True
        End If

        If Me.CheckBox1.Checked Then
            .ChartGroups(0).Stacked = True
        Else
            .ChartGroups(0).Stacked = False
        End If
    End With

End Sub

特殊効果を設定するには-リスト2

 C1ChartコンポーネントのVisualEffectsクラスを使用すると、グラフの表示にスポットライトや影付き、角丸設定などの特殊効果を与えることができます。

 このクラスのメンバは2つしかなく、実際に特殊効果のスタイルを操作するにはVisualEffectsStyleクラスの各プロパティを操作します。VisualEffectsStyleクラスはコレクションになっており、個々のVisualEffectsStyleクラスにアクセスするには、Itemプロパティを利用します。

 特殊効果を設定するかどうかは、VisualEffectsStyleクラスのEnabledプロパティを使用します。Trueで特殊効果が設定されます。

fm2.C1Chart1.VisualEffects.Styles.Item(0).Enabled = True

 効果の内容は、それぞれ下位のクラスを操作します。

影を付ける

 VisualEffectsStyle.ShadowStyleクラスの各プロパティを使って、影がずれる位置やぼかしの程度、透明度を決めます。

 Offsetプロパティは、影のできる距離を設定します。 影の位置は右下の方向にでき、設定値は正の整数で値が大きくなれば影はより離れて作成されます。Softプロパティは、影がソフト形状かどうかを論理値で設定します。Transparencyプロパティは、影の透明度を整数で設定します。

 このプログラムでは、Offsetを1に、透明度を60に設定しています。

.Shadow.Offset = 1
.Shadow.Transparency = 640

スポットライト

 グラフの塗りつぶしにライトを当てることで、明暗を持ったグラデーションで塗りつぶしたような効果を設定できます。

 使用するのは、VisualEffectsStyle.LightStyleクラスのメンバプロパティで、Shapeプロパティはライトの形状を、Sizeプロパティはライトのサイズを、Intensityプロパティは明るさの強度を、Gradientプロパティはライトによって生じるグラデーションのタイプを設定します。

 Scaleプロパティは、パターンの繰り返し幅を設定するプロパティで、0~1までの値を指定します。値が小さければ小さいほど、細かなパターンでグラデーションが繰り返されます。

.Light.Shape = C1.Win.C1Chart.LightShapeEnum.Rectangle
.Light.Size = 0.5
.Light.Intensity = 0.9
.Light.Gradient = C1.Win.C1Chart.LightGradientEnum.SigmeBell
.Light.Scale = 1.0
円グラフを細かなパターンで塗りつぶす
円グラフを細かなパターンで塗りつぶす

エッジの形状

 VisualEffectsStyle.EdgeStyleクラスを使うと、グラフの四角形の角に丸みを与えることができます。Roundingは丸みの半径を指定し、Widthはエッジの幅を設定します。Widthプロパティの値が大きくなれば、グラフ要素の輪郭も太くなります。

.Edge.Rounding = 1
.Edge.Width = 0.15

 単位は、ScalableプロパティがTrueに設定されていると、コントロールのサイズを基準に、各プロパティの単位が設定されます。また、そのときにScaleEffectプロパティにスケールの係数を設定して使うこともできます。

.ScaleEffect = 1
.Scalable = True

グラデーションの方向

 ライトの当たる方向というか、エフェクトを施す方向をAngleプロパティで指定できます。例えば、「45」と設定すると、45度の方向からライトが当たってできたグラデーションの塗りつぶしになります。

特殊効果で見栄えのよいグラフになる
特殊効果で見栄えのよいグラフになる
リスト2
Private Sub Button2_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button2.Click
    With fm2.C1Chart1.VisualEffects.Styles.Item(0)
        If Me.CheckBox2.Checked Then
            .Shadow.Offset = 1
            .Shadow.Transparency = 60
            .Light.Shape = C1.Win.C1Chart.LightShapeEnum.Rectangle
            .Light.Size = 0.5
            .Light.Intensity = 0.9
            .Light.Gradient = C1.Win.C1Chart.LightGradientEnum.SigmeBell
            .Light.Scale = 1.0
            .Angle = 45
            .Edge.Rounding = 1
            .Edge.Width = 0.15
            .ScaleEffect = 1
            .Scalable = True
            .Enabled = True
        Else
            .Enabled = False
        End If
    End With
End Sub

Private Sub NumericUpDown1_ValueChanged( _
    ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles NumericUpDown1.ValueChanged
    fm2.C1Chart1.VisualEffects.Styles.Item(0).Shadow.Offset = _
        Me.NumericUpDown1.Value
End Sub

Private Sub NumericUpDown2_ValueChanged( _
    ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles NumericUpDown2.ValueChanged
    fm2.C1Chart1.VisualEffects.Styles.Item(0).Shadow.Transparency = _
        Me.NumericUpDown2.Value
End Sub

Private Sub NumericUpDown3_ValueChanged( _
    ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles NumericUpDown3.ValueChanged
    fm2.C1Chart1.VisualEffects.Styles.Item(0).Light.Scale = _
        Me.NumericUpDown3.Value
End Sub

まとめ

 1つのデータをいろいろなグラフで表示してみました。どのグラフでデータを表示するのかはデータの種類や使い方によりますが、このコンポーネントであればどんなデータでも自由に表現できるのではないでしょうか。

 単色での塗りつぶしよりも影やグラデーションを施した方がかっこよくなりますね。このような特殊効果もクラスとそのメンバを操作することで簡単にできるのもうれしい機能です。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(True WinChart)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/830 2009/03/17 11:57

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング