C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

チャート上に十字ラインを表示する

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■91504 / inTopicNo.1)  チャート上に十字ラインを表示する
  
□投稿者/ RPG (3回)-(2019/07/02(Tue) 11:45:49)

分類:[.NET 全般] 

チャート上に十字ラインを表示したいのですが、
以下のコードで表示することができます。


Private Sub Chart1_PostPaint(sender As Object, e As System.Windows.Forms.DataVisualization.Charting.ChartPaintEventArgs) Handles Chart1.PostPaint

Dim g As Graphics = e.ChartGraphics.Graphics

dim _mp0 = Chart1.PointToClient(Windows.Forms.Cursor.Position)


If ChartRectangle.Contains(_mp0) Then

g.DrawLine(Pens.Green, _mp0.X, ChartRectangle.Top, _mp0.X, ChartRectangle.Bottom)
g.DrawLine(Pens.Green, ChartRectangle.Left, _mp0.Y, ChartRectangle.Right, _mp0.Y)

End If


ChartRectangleには、チャートのグラフ領域が格納されています。


ただ、一つ問題は、
カーソルを速く動かしてチャートの外に出た時に
十字ラインが取り残されて描画がクリアされないことがあることです。

どうすれば、チャートの外に出ると
クリアできるようにできますでしょうか?

gをPrivate変数にして
Chart1.Leaveでgにnothingを代入するしかないですか?



引用返信 編集キー/
■91505 / inTopicNo.2)  Re[1]: チャート上に十字ラインを表示する
□投稿者/ 魔界の仮面弁士 (2212回)-(2019/07/02(Tue) 12:07:39)
No91504 (RPG さん) に返信
> gをPrivate変数にして
それはしない方が良いでしょう。


> Chart1.Leaveでgにnothingを代入するしかないですか?
ChartRectangle をどの時点で取得・設定しているのかにもよりますが、
Chart1 の MouseLeave あたりで Chart1.Invalidate() を呼び出してみるとか。
引用返信 編集キー/
■91506 / inTopicNo.3)  Re[2]: チャート上に十字ラインを表示する
□投稿者/ RPG (4回)-(2019/07/02(Tue) 12:15:30)
ありがとうございます。

ChartRectangleは、チャートがリサイズされるたびに設定しています。



Private Sub Chart1_MouseLeave(sender As Object, e As EventArgs) Handles Chart1.MouseLeave

Chart1.Invalidate()

End Sub


とやってみましたが、やはり十字架が消去されずに残ってしまうのですが・・・



引用返信 編集キー/
■91507 / inTopicNo.4)  Re[1]: チャート上に十字ラインを表示する
□投稿者/ WebSurfer (1851回)-(2019/07/02(Tue) 12:32:40)
No91504 (RPG さん) に返信

Windows Forms アプリ用の Chart の話と理解しています(ASP.NET 用もあります)・・・

> チャート上に十字ラインを表示したいのですが、

質門者さんの言う「十字ライン」がどういうものかイメージできていませんので、Chart に
備わっている Cursor で目的が果たせるのかどうか不明ですが、もし未調査・未検討であれ
ばチェックしてみてはいかがですか。

Cursor がどういうものかは、Chart のサンプルを入手して Chart Features > Interactive
Charting > Cursors にあるサンプルを見てください。

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ