windows下的MFC繪圖繪表

前段時間除錯晶片,需要畫直方圖,因為我的框架是基於MFC的,時間又緊迫,當時要求我速度搞,所以飢不擇食的尋遍網上的各種輪子。

首先是我們知道如果有資料的話可以直接在excel上面利用它強大的特性來畫圖,微軟的office其實提供了這些畫圖的sdk介面,只要你載入進去就可以,但是太麻煩,而且網上的例子比較少,需要一定的時間去摸索,但是是否有其他開源的框架也能畫出美麗的圖表呢?

我們都知道如果是qt的話,它的QCustomPlot比較好用,其實我就畫過,但是我嫌棄qt用MFC又搞了一個。我找到的第一個MFC控制元件是

TeeChart

,這個控制元件在Debug下面是可以執行跑出來的,但是由於不是正版,而且很多坑,在Release模式下是編譯不透過,我基本試遍所有版本。而且我的資料是一個動態流,對重新整理幀率這個有一定的要求,所以說TeeChart各種原因導致我放棄了這個控制元件,但是如果有人需要靜態圖以及允許在debug下面使用的話,我會建議用這個控制元件。

然後我又找了另外一個輪子就是High-speed Charting Control,這個輪子是比較適合大家使用的。因為它的程式碼是開源的,而且bug極少,測了一下效果也不錯。

連結:https://pan。baidu。com/s/1o5QR9GRMx5aDreesMYh0Cg

提取碼:00r1

只需要下載完這部分原始碼,然後載入你專案路徑下,按需要去呼叫即可。以下是這個控制元件的程式碼分佈

這是我在程式碼裡初始化控制元件

由於我只用到直方圖部分,所以按照這個去設點,把點統計出來按照介面設定即可,如果有用到的可以試試。

出來後效果

控制元件的主要特點是:

高速繪圖(軸固定時),允許快速繪製資料

無限數量的資料序列(記憶體是限制)

每個資料序列的資料量不受限制

支援線圖,點圖,平面圖,柱狀圖,K線圖 和甘特圖系列

最多四個軸(左,下,右和上軸)

標準軸,對數軸或日期/時間軸

自動伸縮的座標軸, 翻轉的座標軸(相互獨立)

軸標籤

點標籤

平滑的曲線

網格

圖例和標題

互動性(在控制元件中發生特定事件時的通知)

支援手動縮放和滑鼠平移

支援滑鼠指標

支援軸上的捲軸

高度可定製(顏色,標題,標籤,邊緣,字型等)

支援UNICODE

支援列印和儲存到影象檔案

這個基本滿足了大家對於圖表的需求,而且我覺得對比excel也比較美觀的。由於MFC如果手動去描繪的話,這個過程可能不太順暢,因為要耗費一定的時間,所以我們會建議你優先使用別人的開源框架,別人已經踩過坑造出的輪子是最優的。

當然,我在晶片的視覺處理中使用了大量的opencv,opencv的強大,畫一個折線圖都不在畫下,但是相比較而言,opencv只能給出一個比較靜態的圖,如果你要縮放擴大,或者顏色渲染,圖文修改都會比較麻煩。

總的來說,最優的方案還是建議用qt來畫圖吧,MFC比較麻煩,它的難度會比QT高,QT在工業領域上的佔比很高。