从资源中加载微软图表控件中的标记图像

时间:2015-01-05 13:13:20

标签: c# .net

平台:C# IDE:Microsoft Visual Studio 2010

我正在尝试从资源路径中的图表控件中的某个点加载标记图像,但它无法加载文件路径。有什么建议吗?

foreach (var pt in chart1.Series["Series1"].Points)
{
    foreach (DataRow dr in ds.Tables[0].Rows)
    {
        if (dr["OverNo"].Equals(pt.XValue) && Convert.ToInt32(dr["Fow"]) > 0)
        {
            //   pt.XValue +=5;
            if (Convert.ToInt32(dr["Fow"]) > 0)
            {
                //pt.MarkerImage = s + SC.whiteBall; // this works fine 
                //pt.MarkerStyle = System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Circle;

                if (Convert.ToInt32(dr["Fow"]) == 1)
                {
                    //   Bitmap b = new Bitmap(Properties.Resources.WhiteBall1);
                    pt.MarkerImage = s + SC.whiteBall;
                    pt.MarkerStyle = System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Circle;
                }
            }
        }
    }
}
  

错误:ImageLoader - 无法从此位置加载图片:   Program.cs中的System.Drawing.Bitmap

2 个答案:

答案 0 :(得分:1)

  1. 将图像文件作为内容包含在应用程序中,复制到输出目录。
  2. 使用MarkerImage的完整路径,例如MainApplicationPath \ Images \ yourImage.bmp。查看File.Exists
  3. 您可以在数据点和系列上使用MarkerImage属性。如果您为数据系列使用特定图像,则所有数据点都将继承该数据。您可以为特定数据点覆盖它。
  4. 使用自定义图像时使用MarkerStyle.None。
  5. 如果从自定义图片切换到常规标记,然后在数据点上使用DeleteCustomProperty("MarkerImage")DeleteCustomProperty("MarkerStyle"),请重置。

答案 1 :(得分:0)

您实际上可以使用嵌入式资源,而不是复制到输出目录的文件:

current_user
  1. 将图像文件(如my_image.png)作为资源加载。
  2. 通过NamedImage对象将其添加到图表控件的Images集合中。
  3. 将用于对象的键名传递给MarkerImage系列/点属性。
  4. PS:将资源文件设置为Embedded Resource,将MarkerStyle设置为None似乎是可选的。