【发布时间】:2013-02-22 08:41:35
【问题描述】:
我正在使用 c# 中的 windows 窗体应用程序。我已经安装了 TeeChart for.net v3 的许可版本。我正在尝试删除 TeeChart 中一些不需要的部分。
感谢 stackoverflow 网站用户,他们帮助我在 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);
}
}
上面的代码正在创建弹出窗口,如下所示。
我正在尝试实现“For 7.6 cc”和“To 7.6 cc”的功能。
当我单击“到 7.6 cc”时,图表应该从“0 到 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”,但我无法将该值转换为时间。请帮助我。
【问题讨论】: