public UserControl1()
{
InitializeComponent();
Chart chart = new Chart();
// 创建一个Chart控件
chart.Size = new Size(600, 600);
chart.Location = new Point(0, 0);
chart.BackColor = Color.Pink;
this.Controls.Add(chart);
chart.MouseMove = Chart_MouseMove;
chart.MouseClick = Chart_MouseClick;
chart.MouseLeave = Chart_MouseLeave;
// 设置 Chart 控件的属性
chart.ChartAreas.Add("chartArea2");
chart.Series.Add("series");
chart.Series["series"].ChartType = SeriesChartType.Doughnut;
chart.Series["series"].CustomProperties = "DoughnutRadius=50";//内圆直径的更改
chart.Series["series"].Font = new Font("Arial", 30, FontStyle.Bold);
chart.Series["series"].LabelForeColor = Color.White; // 设置字体颜色为红色
// 添加数据点
chart.Series["series"].Points.AddXY("10\n号码", 60);
chart.Series["series"].Points.AddXY("2号球", 60);
chart.Series["series"].Points.AddXY("3号球", 60);
chart.Series["series"].Points.AddXY("4号球", 60);
chart.Series["series"].Points.AddXY("5号球", 60);
chart.Series["series"].Points.AddXY("6号球", 60);
}
private void Chart_MouseLeave(object sender, EventArgs e)
{
Chart chart = (Chart)sender;
chart.Series["series"].ToolTip = "";
}
private void Chart_MouseClick(object sender, MouseEventArgs e)
{
Chart chart = (Chart)sender;
HitTestResult result = chart.HitTest(e.X, e.Y);
if (result.ChartElementType == ChartElementType.DataPoint)
{
DataPoint dataPoint = result.Series.Points[result.PointIndex];
MessageBox.Show("您选择了:" dataPoint.AxisLabel);
}
}
private void Chart_MouseMove(object sender, MouseEventArgs e)
{
Chart chart = (Chart)sender;
HitTestResult result = chart.HitTest(e.X, e.Y);
if (result.ChartElementType == ChartElementType.DataPoint)
{
DataPoint dataPoint = result.Series.Points[result.PointIndex];
chart.Series["series"].Points[result.PointIndex].BorderColor = Color.White;
chart.Series["series"].Points[result.PointIndex].BorderWidth = 8;//边框宽度
//chart.Series["series"].ToolTip = "您进入了 " dataPoint.AxisLabel " 的位置";
string axisLabel = dataPoint.AxisLabel;
string tooltipText = GetTooltipText(axisLabel); // 根据AxisLabel获取相应的提示消息
chart.Series["series"].ToolTip = tooltipText;
PlayTooltip(tooltipText); // 播放提示消息
}
else
{
chart.Series["series"].ToolTip = "";
foreach (DataPoint dataPoint in chart.Series["series"].Points)
{
dataPoint.BorderColor = Color.Transparent;
dataPoint.BorderWidth = 0;
}
}
}
public string GetTooltipText(string axisLabel)
{
// 使用字典或switch语句来映射每个数据点的AxisLabel到相应的提示消息
Dictionary<string, string> tooltipMappings = new Dictionary<string, string>
{
{ "10\n号码", "前方有危险" },
{ "2号球", "我这里有物质" },
{ "3号球", "这里有人来过" },
{ "4号球", "集合到我这里来" },
{ "5号球", "撤离,快上车" },
{ "6号球", "进攻标志点" },
};
if (tooltipMappings.ContainsKey(axisLabel))
{
return tooltipMappings[axisLabel];
}
else
{
return "";
}
}
public void PlayTooltip(string tooltipText)
{
try
{
SpeechSynthesizer synthesizer = new SpeechSynthesizer();
synthesizer.Speak(tooltipText);
}
catch (Exception ex)
{
MessageBox.Show("播放提示消息出错:" ex.Message);
}
}