我在我的WindowsForms應用程序中使用MS Chart,我想在圖表上顯示很多不同的標記。原則上,它是通過爲Series
或DataPoint
指定MarkerImage
來完成的。問題在於MarkerImage
屬性是字符串類型,因此它的用法爲no documentation。根據MS Chart樣本,它是圖像文件的路徑。爲MS圖表控件改善自定義標記圖像性能
我設法通過將圖像放入項目/圖像文件夾中,指定「複製到輸出目錄」爲它們,然後在代碼中使用series.MarkerImage = "images/image.bmp";
。它原則上工作,但在運行時,首先在圖表上顯示標記圖像時,應用程序會凍結一段時間。我認爲這是因爲加載新文件的磁盤訪問時間。每當新圖像首次出現在屏幕上時,就會發生這種情況,直到所有圖像都被緩存爲止,應用程序才真正無響應。
我在尋找的是一些解決方案來改善這一點。充其量,我更願意將所有圖像存儲爲嵌入式資源,這要比使用應用程序發送其他圖像文件夾要好得多。根據documentation爲LegendCell.Image
(它們有相似的含義),字符串實際上是一個URL。我發現可以使用Page.ClientScript.GetWebResourceUrl
獲取ASP.NET應用程序中的嵌入式資源的URL,但是我的應用程序(如果只是普通的WindowsForms)。是否有可能在Windows窗體中獲得某種嵌入式資源的URL?
我已經想實現我自己的系列數據點或子孫來處理資源引用,但似乎並沒有成爲一個正確的方式,因爲我什麼也看不到相關的系列實際的渲染,我可以覆蓋...
我想到的另一個解決方案是在應用程序啓動時自己預先加載所有圖像文件,但這似乎是一種破解。如果我想將標記與單獨的程序集(.dll)一起提供,會怎麼樣?
更新。我試過了:
- 用File.ReadAllBytes預載圖像。不加速任何事情。
- 使用Data URI。除文本外「失敗,不支持給定路徑的格式」。
我仍在尋找解決方案。 –