C# で Windows フォーム アプリケーションを使用しています。ライセンス版の TeeChart for.net v3 をインストールしました。TeeChart の不要な部分を削除しようとしています。
stackoverflow Web サイト ユーザーのおかげで、TeeChart でマウス クリック ポップアップを作成することができました。今、そのポップアップのクリックにいくつかの機能を実装したいと考えています。
以下のコードを使用して、マウスの右クリック ポップアップを作成できます。
double m_dblTempVolFromTo = 0;
double dtFromTo = 0;
private void mainTChart_MouseUp(object sender, MouseEventArgs e)
{
if (!checkBoxIsTime.Checked && e.Button == MouseButtons.Right)
{
m_dblTempVolFromTo = mainTChart.Series[0].XScreenToValue(e.X);
mainTChart.ContextMenu = new ContextMenu();
mainTChart.ContextMenu.MenuItems.Add(new MenuItem("From " + m_dblTempVolFromTo + " cc"));
mainTChart.ContextMenu.MenuItems.Add(new MenuItem("To " + m_dblTempVolFromTo + " cc"));
mainTChart.ContextMenu.MenuItems[0].Click += new EventHandler(From_Click);
mainTChart.ContextMenu.MenuItems[1].Click += new EventHandler(To_Click);
}
else if (checkBoxIsTime.Checked && e.Button == MouseButtons.Right)
{
DateTime dt;
dtFromTo = mainTChart.Series[0].XScreenToValue(e.X);
DateTime.TryParse(dtFromTo.ToString(), out dt);
mainTChart.ContextMenu = new ContextMenu();
mainTChart.ContextMenu.MenuItems.Add(new MenuItem("From " + dt.TimeOfDay.ToString() ));
mainTChart.ContextMenu.MenuItems.Add(new MenuItem("To " + dt.TimeOfDay.ToString()));
mainTChart.ContextMenu.MenuItems[0].Click += new EventHandler(From_Click);
mainTChart.ContextMenu.MenuItems[1].Click += new EventHandler(To_Click);
}
}
上記のコードは、以下に示すようなポップアップを作成しています。
「7.6cc用」と「7.6ccまで」の機能を実装しようとしています。「To 7.6 cc」をクリックすると、チャートは「0 to 7.6」スケールから削除され、残りの部分がそこにあるはずです。「145 cc から」をクリックした場合も同様に、「145 から 150 (目盛りの終わり)」からチャートを削除する必要があります。
「To」をクリックしてチャートの開始部分を削除し、「From」をクリックしてチャートの終了部分を削除します。
私はこのように試しましたが、欲しいものを手に入れることができません。
void From_Click(object sender, EventArgs e)
{
if (!checkBoxIsTime.Checked)
{
var destBitmap = mainTChart.Export.Image.Bitmap.Clone(new Rect(0, 0, 100, 200), sourceBitmap.PixelFormat);
}
}
void To_Click(object sender, EventArgs e)
{
}
私もこのコードで試しました
void mainTChart_GetLegendRect(object sender, mainTChart.GetLegendRectEventArgs e)
{
Rectangle cropRect = e.Rectangle;
Bitmap legendImg = new Bitmap(cropRect.Width, cropRect.Height);
using (Graphics g = Graphics.FromImage(legendImg))
{
g.DrawImage(chartBmp, new Rectangle(0, 0, mainTChart.Width, mainTChart.Height),
cropRect,
GraphicsUnit.Pixel);
}
}
私には何も機能していません。誰でもこのタスクを手伝ってもらえますか。
前もって感謝します。
X軸を時間として編集すると、マウスクリックで表示時間を取得できません。以下に示すように私が試したコード
DateTime dt;
dtFromTo = mainTChart.Series[0].XScreenToValue(e.X);
DateTime.TryParse(dtFromTo.ToString(), out dt);
mainTChart.ContextMenu = new ContextMenu();
mainTChart.ContextMenu.MenuItems.Add(new MenuItem("From " + dt.TimeOfDay.ToString() ));
mainTChart.ContextMenu.MenuItems.Add(new MenuItem("To " + dt.TimeOfDay.ToString()));
上の画像のよう になっていますが、マウスの右クリックで同等の時間を表示したいと考えています。この変数「dtFromTo」に 41322.9876587965 のような値を取得していますが、その値を時間に変換できません。助けてください。