tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルzedgraphでデータラベルのフォントサイズ変更
記事No10029
投稿日: 2010/03/31(Wed) 18:52
投稿者どんちゃん
お世話になります。
VB2008 Vistaで開発しております

オープンソース「zedgraph」を使用して棒グラフを書いていますが、
データラベルを表示後に、その文字サイズの変更の仕方がわかりません。

どうぞ宜しくお願い致します。

    ' グラフオブジェクトの準備
    Dim myPane As GraphPane = zg.GraphPane

    ' データリスト用意
    Dim list As New PointPairList()
    list.Add(1, 100)
    list.Add(2, 200)
    list.Add(3, 300)

    ' 棒グラフを作成
    Dim myBar As BarItem
    myBar = myPane.AddBar("", list, Color.Blue)

    ' データラベルの表示
    BarItem.CreateBarLabels(myPane, True, "f0")

[ツリー表示へ]
タイトルRe: zedgraphでデータラベルのフォントサイズ変更
記事No10030
投稿日: 2010/03/31(Wed) 21:22
投稿者花ちゃん
> VB2008 Vistaで開発しております
> オープンソース「zedgraph」を使用して棒グラフを書いていますが、
> データラベルを表示後に、その文字サイズの変更の仕方がわかりません。

VB2008 を使っているのなら、Microsoft Chart Controls for Microsoft .NET を
使用されたらいかがですか?
作成できるグラフの種類もこちらの方が豊富(多分)です。
ここのサンプル投稿用掲示板にサンプルを投稿しております。

Microsoft Chart Controls(VB2008版)を試して見るその1(VB.NET)
http://www.hanatyan.sakura.ne.jp/patio/read.cgi?no=255

Chartコントロール(VB2008版)で散布図を表示(VB.NET)
http://www.hanatyan.sakura.ne.jp/patio/read.cgi?no=256

Chartコントロール(VB2008版)でレーダーチャートを表示(VB.NET)
http://www.hanatyan.sakura.ne.jp/patio/read.cgi?no=257

Chartコントロール(VB2008版)ワンポイントテクニック集(VB.NET)
http://www.hanatyan.sakura.ne.jp/patio/read.cgi?no=262

[ツリー表示へ]
タイトルRe^2: zedgraphでデータラベルのフォントサイズ変更
記事No10031
投稿日: 2010/04/01(Thu) 00:34
投稿者どんちゃん
> VB2008 を使っているのなら、Microsoft Chart Controls for Microsoft .NET を
> 使用されたらいかがですか?

花ちゃん様、早速の返信・アドバイスありがとうございます。
開発当初 Chart Controlsも検討しましたが、
・マウスホイールで拡大縮小
・右クリック -> グラフコピー
・Ctrl + マウスドラッグでプロットエリア内の表示移動
など、操作性の部分で使い勝手が良さそうだったため、zedgraphを選択しました。

フォントサイズ変更処理ができれば、一段落するところまで開発してしまっている為、
もう少し検証してみようと思います。

[ツリー表示へ]
タイトルRe: zedgraphでデータラベルのフォントサイズ変更
記事No10032
投稿日: 2010/04/01(Thu) 10:47
投稿者魔界の仮面弁士
回答に非ず。
ZedGraph を触った事がない(初めて聞いた)上に、インストールできそうな環境も
用意できないので、以下、机上推論です。


> データラベルを表示後に、その文字サイズの変更の仕方がわかりません。
まず、提示ソースと下記のドキュメントを見ると、
http://zedgraph.sourceforge.net/documentation/default.html

・フォントサイズの変更は、FontSpec.Size で行えるらしい。(myPane.Title.FontSpec.Size 等?)
・データラベルは BarItem.CreateBarLabels で表示できるが、これは Shared Sub である。
・このメソッドには、フォントサイズを指定可能なオーバーロードも存在している。
 → 今回の質問はデータラベルの「表示後」に指定する方法なので、先に指定するのは NG らしい。
・CreateBarLabels メソッドとは、GraphPane に TextObj を生成するためのものである。
・TextObj には、FontSpec プロパティが存在している。
・それでは、BarItem に対して生成された myPane の TextObj を得られれば良いのではないか?

という所まで推測できました。

そこからさらに、

・TextObj は、GraphObj を継承しているらしい。
・GraphObj は、GraphObjList コレクションで管理されているらしい。
・myPane の GraphObjList プロパティから辿れそう。

であろうかと推測したのですが…ここで止まりました。イメージコードとしては
 For Each foo In myPane.GraphObjList.OfType(Of TextObj)
  If foo.何某 = 条件 Then
   foo.FontSpec.Size = サイズ
   Exit For
  End If
 Next
と書けるかな…と想像してみましたが、さて、判定条件をどうするべきか。。。
それとも、もっと別の手順で指定できるようになっているのかな?

[ツリー表示へ]
タイトルRe^2: zedgraphでデータラベルのフォントサイズ変更
記事No10036
投稿日: 2010/04/01(Thu) 18:38
投稿者どんちゃん
魔界の仮面弁士様、返信ありがとうございます。

イメージコードありがとうございます。
そのまま使わせていただきまして、ばっちり動作致しました。

 For Each foo In myPane.GraphObjList.OfType(Of TextObj)
  foo.FontSpec.Size = サイズ
 Next

  ※今回はデータラベル用のTextObjしか生成していなかった為、
    If文で条件を指定せずに、単純にFor Eachで回すことにしました。

大変助かりました。ありがとうございました。

[ツリー表示へ]