トップ回答者
ChartコントロールのY軸タイトルのレイアウト設定

質問
-
お世話になります。
現在、VisualC#(.NET Framework3.5 SP1)にて、
Chartコントロール(MS Chart Controls For.NET Framework3.5 SP1)を使用して
グラフを表示する機能のあるWindowsFormアプリを開発しています。
Y軸のタイトルに単位(水平方向に表示)を表示するように設定したのですが、
いざ表示するとタイトルが自動改行されてしまい、見難くなってしまいます。
探し方が悪いのか、
自動改行オフになりそうなプロパティや、Y軸タイトル部分の幅を設定するようなプロパティ等、
見つけることができませんでした。
回避方法等をご存知の方がいらっしゃいましたら、お知恵をお貸し頂けないでしょうか?
回答
-
横に隙間をあけて、自前で描画するのは?
public Form1() { InitializeComponent(); var pos = this.chart1.ChartAreas[0].Position; pos.Auto = false; pos.X = 50; chart1.PostPaint += new EventHandler<System.Windows.Forms.DataVisualization.Charting.ChartPaintEventArgs>(chart1_PostPaint); } void chart1_PostPaint(object sender, System.Windows.Forms.DataVisualization.Charting.ChartPaintEventArgs e) { System.Windows.Forms.DataVisualization.Charting.Chart chart=(System.Windows.Forms.DataVisualization.Charting.Chart)sender; float width=chart.ChartAreas[0].Position.X; float height=chart.Height; System.Drawing.RectangleF rect=new RectangleF(0,0,width,height); StringFormat sf = new StringFormat(); Font fnt = new Font("MS UI Gothic", 10); e.ChartGraphics.Graphics.DrawString("あいうえおかきくけこ", fnt, Brushes.Red,rect, sf); }
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)- 回答としてマーク みずたまおれんぢ 2011年8月28日 23:56
-
教えて頂いた方法を使った場合は、、、
切り替える単位分のチャートエリアを作ってenabledで表示するグラフを制御するか、
もしくは、
このチャートは1秒間隔で更新するので、単一のチャートエリアを作って、更新毎に
単位の選択状態を持ったコントロールを見て描画するか、
コンボボックス等で単位を切り替えた時に Chart を Invalidate すればいいのではないでしょうか。サンプルでも使われていますし。
(URL は .NET Framework 4 が対象ですが、Chart Controls for Microsoft .NET Framework 3.5 でも同じです。)
Chart.Invalidate メソッド (System.Windows.Forms.DataVisualization.Charting)
http://msdn.microsoft.com/ja-jp/library/dd488967.aspx- 回答としてマーク みずたまおれんぢ 2011年8月28日 23:58
すべての返信
-
横に隙間をあけて、自前で描画するのは?
public Form1() { InitializeComponent(); var pos = this.chart1.ChartAreas[0].Position; pos.Auto = false; pos.X = 50; chart1.PostPaint += new EventHandler<System.Windows.Forms.DataVisualization.Charting.ChartPaintEventArgs>(chart1_PostPaint); } void chart1_PostPaint(object sender, System.Windows.Forms.DataVisualization.Charting.ChartPaintEventArgs e) { System.Windows.Forms.DataVisualization.Charting.Chart chart=(System.Windows.Forms.DataVisualization.Charting.Chart)sender; float width=chart.ChartAreas[0].Position.X; float height=chart.Height; System.Drawing.RectangleF rect=new RectangleF(0,0,width,height); StringFormat sf = new StringFormat(); Font fnt = new Font("MS UI Gothic", 10); e.ChartGraphics.Graphics.DrawString("あいうえおかきくけこ", fnt, Brushes.Red,rect, sf); }
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)- 回答としてマーク みずたまおれんぢ 2011年8月28日 23:56
-
早速の返信ありがとうございます。
また、サンプルソースも添えて頂き、ありがとうございます。
なるほど・・・
グラフ描画時に自前描画するという方法もありますね。
実は、このグラフは線グラフなのですが、
フォーム上のコンボボックス等のコントロールから単位を変更したら、
単位の表示を変更してY軸レンジを変更して云々・・・といったように
チャートを動的に変更をさせようと考えているので、プロパティ等で
調整できたらなぁ・・・と思っていたのですが。。。
難しそうですかね。
教えて頂いた方法を使った場合は、、、
切り替える単位分のチャートエリアを作ってenabledで表示するグラフを制御するか、
もしくは、
このチャートは1秒間隔で更新するので、単一のチャートエリアを作って、更新毎に
単位の選択状態を持ったコントロールを見て描画するか、
プロパティ等で調整できないとなると、最終的にはこういった方法になりそうですね。。。
ん~このコントロール・・・なんか惜しいって感じですね。
-
教えて頂いた方法を使った場合は、、、
切り替える単位分のチャートエリアを作ってenabledで表示するグラフを制御するか、
もしくは、
このチャートは1秒間隔で更新するので、単一のチャートエリアを作って、更新毎に
単位の選択状態を持ったコントロールを見て描画するか、
コンボボックス等で単位を切り替えた時に Chart を Invalidate すればいいのではないでしょうか。サンプルでも使われていますし。
(URL は .NET Framework 4 が対象ですが、Chart Controls for Microsoft .NET Framework 3.5 でも同じです。)
Chart.Invalidate メソッド (System.Windows.Forms.DataVisualization.Charting)
http://msdn.microsoft.com/ja-jp/library/dd488967.aspx- 回答としてマーク みずたまおれんぢ 2011年8月28日 23:58