[英]Add images on chart control
我不確定標題是否正確,所以如果我解釋了我想做的事情會更好。 我想在圖表控件及其周圍添加一些圖像以繪制圖形。
我想在由坐標定義的坐標平面上顯示傳感器的布局,同時注意地理對象(森林,河流等)的位置。 這些對象將是我要添加到圖表/中的圖像
我該怎么做? 有可能的?
如果您向我們展示了一個例子,我們也許可以幫助找到最佳的方法。
有幾種選擇:
PictureBox
或Panel
添加到Chart
,將它們添加到圖表的Controls
集合中 Pre-
PostPaint
或PostPaint
事件中繪制它們 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
,因此當圖表調整大小時,它們將很好地移動! 您也可以通過設置Width
和Height
縮放圖像; 這有點棘手,因為它也會以百分比表示 (而不是文檔錯誤地以pixel表示 )。 您可能想要遍歷ImageAnnotations並在Resize
事件中重新調整它們的Resize
ia.Height = ia.Width * chart1.Width / chart1.Height;
還要注意,還有其他定位注釋的方法,例如錨定到數據點,但這似乎是靜態裝飾的最佳方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.