簡體   English   中英

在圖表控件上添加圖像

[英]Add images on chart control

我不確定標題是否正確,所以如果我解釋了我想做的事情會更好。 我想在圖表控件及其周圍添加一些圖像以繪制圖形。

我想在由坐標定義的坐標平面上顯示傳感器的布局,同時注意地理對象(森林,河流等)的位置。 這些對象將是我要添加到圖表/中的圖像

我該怎么做? 有可能的?

如果您向我們展示了一個例子,我們也許可以幫助找到最佳的方法。

有幾種選擇:

  • 您可以通過將圖像控件(例如PictureBoxPanel添加到Chart ,將它們添加到圖表的Controls集合中
  • 您可以在Pre- PostPaintPostPaint事件中繪制它們
  • 您可以組裝一個BackImage ,其中包含要放置在圖表周圍的所有圖像。
  • 您可以將ImageAnnotations添加到圖表。 (推薦的)

后者顯然是最好的集成。

這是一個例子:

首先,將要使用的圖像添加到“圖表”的“ Images集合中:

List<string> imgFiles = new List<string>()
{ yourImageFileName1, ...};

for (int i = 0; i  < imgFiles.Count; i++)
{
    Image img = Bitmap.FromFile(imgFiles[i]);
    chart1.Images.Add(new NamedImage("Image" + i, img));
}

請注意此處使用的NamedImage類。 它允許您通過字符串引用圖像; 選擇更好的名字! 也許Path.GetFileNameWithoutExtension(imgFiles[i]) -還要注意,您不得 Dispose Images ,否則它們將消失!

接下來,通過減小ChartArea的大小在圖表的右側ChartArea出一些空間:

ChartArea ca = chart1.ChartAreas[0];
ca.Position = new ElementPosition(5,5,70,90);

請注意,這些值是圖表的ClientSize 百分比 ,因此在調整Chart大小時,它們會增大和縮小!

最后,我們可以將它們全部添加。 將需要在特定位置添加它們。 我將它們添加到右側的某些位置,並使它們可移動:

foreach (NamedImage img in chart1.Images)
{
    ImageAnnotation ia = new ImageAnnotation();
    ia.Image = img.Name;
    ia.AllowMoving = true;
    ia.X = 77;
    ia.Y = 15 * chart1.Images.IndexOf(img) + 5;
    chart1.Annotations.Add(ia);
}

現在您應該可以看到Annotions 如果您添加此事件:

private void chart1_AnnotationPositionChanging(object sender, 
                                               AnnotationPositionChangingEventArgs e)
{
    testLabel.Text = e.Annotation.X + " "  + e.Annotation.Y;
}

..您將看到最佳職位的數字。 最終,您當然不會讓它們移動。

請注意,“ Annotations'位置也以percentages ,因此當圖表調整大小時,它們將很好地移動! 您也可以通過設置WidthHeight縮放圖像; 這有點棘手,因為它也會以百分比表示 (而不是文檔錯誤地以pixel表示 )。 您可能想要遍歷ImageAnnotations並在Resize事件中重新調整它們的Resize ia.Height = ia.Width * chart1.Width / chart1.Height;

還要注意,還有其他定位注釋的方法,例如錨定到數據點,但這似乎是靜態裝飾的最佳方法。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM