使用 LightningChart®.NET 函數(shù)庫
為使用 LightningChart®.NET 組件,必須添加引用 Arction .dll 文件。這些.dll 文件可在安裝文件夾中找到。在開發(fā)應(yīng)用程序時需要用到以下程序集
Arction.WinForms.Charting.LightningChartUltimate.dll.
Arction.Wpf.Charting.LightningChartUltimate.dll
Arction.DirectX.dll
Arction.RenderingDefinitions.dll
Arction.Wpf.SemibindableCharting.LightningChartUltimate.dll
Arction.DirectX.dll
Arction.RenderingDefinitions.dll
Arction.Wpf.BindableCharting.LightningChartUltimate.dll
Arction.DirectX.dll
Arction.RenderingDefinitions.dll
Arction.Wpf.SignalProcessing.SignalTools.dll
以上參考文件添加成功后,在建立項目時,全部所需的程序集會自動復制到輸出文件夾中。
由于 Arction.DirectXFiles.dll 文件過大,會增加初始化時間,添加引用文件時不會自動包括在內(nèi)。只有當系統(tǒng)中沒有正確的 DirectX 程序集的時候才需要添加。Arction.DirectXInit.dll 程序會檢查已有的.dll 文件,并在需要時加載這些文件。一經(jīng)加載后,會將 DirectX-dlls 文件寫入到 Windows 的緩存文件夾,供 LightningChart 在將來需要時訪問使用,這樣就加快了初始化速度。
建議不要把 Arction.DirectXFiles.dll 列入引用文件,而是將其復制到 exe.文件。
用代碼創(chuàng)建圖表
LightningChartUltimate 組件可以通過從 toolbox 中拖拽來添加,或者完全采用代碼隱藏(代碼后置)方式來添加。以代碼形式來創(chuàng)建圖表對象具有更方便地更新版本的優(yōu)勢。此外,還可以避免一些與(反)序列化相關(guān)的問題。
以下示例演示了一種以代碼隱藏方式(.xaml.cs 文件)創(chuàng)建一個 WPF 無綁定圖表的方法。
using Arction.Wpf.Charting;
namespace ExampleProject
{
public partial class ExampleApp : Page
{
private LightningChartUltimate _chart = null;
public ExampleApp()
{
InitializeComponent();
CreateChart();
}
private void CreateChart()
{
_chart = new LightningChartUltimate();
//父容器中的圖表控件
(Content as Grid).Children.Add(_chart);
// 圖表未正確設(shè)置,禁用渲染 Disable rendering until the whole chart is set up correctly.
_chart.BeginUpdate();
// 配置圖表Configure chart here.
// 渲染圖表Allow rendering the chart.
_chart.EndUpdate();
}
} }
從工具箱添加至 Windows Forms 項目
將 LightningChartUltimate 控件從 toolbox 添加至設(shè)計窗中,會出現(xiàn)一個圖表,其屬性顯示在Properties 窗口中。
屬性
對屬性可以進行自由修改。此外,還可以將新的系列和其他對象插入到其集合中。系列數(shù)據(jù)點必須通過代碼表示。
事件處理程序
圖表主級別的事件處理程序,可以使用屬性網(wǎng)格進行分配。對于已添加至集合的對象而言,必須通過代碼來分配事件處理程序。
有關(guān)更新版本的最佳方法
圖表屬性數(shù)據(jù)經(jīng)過序列化, 存放至 Visual Studio 項目的.resx 文件中。版本更新后,LightningChartUltimate API 會出現(xiàn)一點小變化,可能導致在.resx 文件中新版本存在不兼容的序列化結(jié)果。
為了便于更新,強烈建議創(chuàng)建圖表對象,以代碼形式添加所有系列、事件處理程序等。然后項目正確加載,在編譯時顯示可能的錯誤,這讓修復這些錯誤比修復.resx 文件更容易。采用.resc 文件,一些屬性定義可能會丟失,但采用代碼,這些屬性的具體定義一直都不會變。
從工具箱添加至 WPF 項目
從 toolbox 向 Window 或另一個容器添加 LightningChartUltimate 部分綁定或全綁定 WPF 控件。圖表會出現(xiàn)在設(shè)計窗口,并且其屬性會在 Properties 窗口顯示出。XAML 編輯器可以顯示出具體內(nèi)容以及對圖表默認屬性做出的修改。
屬性
對屬性不僅可以進行自由修改,而且可以將新的系列以及其他對象插入到其集合中。
事件處理程序
圖表主級別的事件處理程序,可以使用屬性網(wǎng)格進行分配。對于已添加至集合的對象而言,必須通過代碼來分配事件處理程序。
添加至 Blend WPF 項目
在“Projects”選項卡中,選擇“References”。右鍵單擊并選擇“Add reference…”,然后瀏覽,從 c:\program files (x86)\Arction\LightningChart .NET SDK v.8\LibNet4 中搜尋到Arction.WPF.Charting.LightningChartUltimate.dll 文件。
選擇“Assets”選項卡。然后在搜索框中輸入“Lightning”。在搜索結(jié)果中會顯示帶有LightningChartUltimate 的行。再將對象拖動到 WPF 窗口中
有關(guān)版本更新的最佳方法
圖表屬性數(shù)據(jù)采用 XAML 存儲。新版本的屬性設(shè)置略有不同,會導致 LightningChartUltimate 對象不會出現(xiàn)在設(shè)計窗中。隨后需要進行相關(guān)的 XAML 修改。XAML 標簽樹可能會非常龐大,并且可能會非常難以進行編輯。
為了便于更新,強烈建議在設(shè)計窗中創(chuàng)建圖表對象,設(shè)置好其布局,并對齊相關(guān)屬性。使用代碼設(shè)置其他部分?;蛘邎D表對象也使用代碼創(chuàng)建。
防止圖表模糊
這是 WPF 的一個共同特征,而且與圖表本身無關(guān),但采用 LightningChart 精確渲染后會變得清 晰明顯。
設(shè)置圖表父控件 UseLayoutRounding = True ,可以防止圖表看上去模糊不清。雖然圖表在設(shè)計窗中可能仍然看上去模糊,但是當運行應(yīng)用程序后會看的很清晰。父控件例如 Grid, Canvas, DockManager 等
對象模型
掌握 LightningChart 對象模型的最好方法是使用 Visual Studio 的 Properties editor(屬性編輯器)。
Windows Forms 與 WPF 之間的區(qū)別
就 Chart 一級而言,Windows Forms 和 WPF 的屬性樹以及對象模型幾乎是完全相同的。二者主 要不同之處如下;
LightningChart 視圖
LightningChart 的主要視圖如下:
通過設(shè)置 ActiveView 屬性可以對可視化視圖進行更改。默認視圖為 ViewXY。
設(shè)置可視化視圖為3D
chart.ActiveView = ActiveView.View3D;
視圖與縮放區(qū)域定義
LightningChart 視圖包含了幾個不同的區(qū)域,各自反映了不同的信息。這些區(qū)域根據(jù)視圖的內(nèi)容可以看做是幾個平面矩形,但無論視圖類型如何,這些定義都是一致的;特別是在縮放操作時,將決定要顯示圖表的哪部分區(qū)域。
設(shè)置背景填充
所有的視圖的背景填充都一樣。
chart.Background.Color = Color.DarkBlue;
chart.ChartBackground.Color = Colors.DarkBlue;
背景填充支持以下幾種方式:
chart.ChartBackground.GradientFill = GradientFill.Cylindrical;
chart.ChartBackground.GradientColor = Colors.Black;
chart.ChartBackground.GradientDirection = -45;
設(shè)置透明背景
在 WPF 中,可將圖表設(shè)置成顯示為透明,這樣在圖表下方的對象可以透過圖表顯示出來。
設(shè)置 ChartBackground.Color = #00000000(全透明黑色)
注意!不要設(shè)置 ‘Transparent’ (#00FFFFFF)。該設(shè)置無法穿透顯示。
WinForms 不支持控件透明背景。
配置外觀/性能設(shè)置
ChartRenderOptions (在 WinForms 中為 RenderOptions)包含用于配置外觀和性能的屬性。
DeviceType
// 通過代碼更改渲染設(shè)備
chart.ChartRenderOptions.DeviceType = RendererDeviceType.Auto;
Auto 也稱為 AutoPreferD11 選項,此為默認設(shè)置。
AutoPreferD9 更傾向于 DirectX9 硬件渲染,并根據(jù)可用性依照順序:HW9 -> HW11 -
> SW11 -> SW9 自動選擇設(shè)備。當硬件不可用時,則會返回至 WARP(SW11)軟件渲染。
AutoPreferD11 更適合 DirectX11 硬件渲染,并根據(jù)可用性依照順序:HW11 -> HW9 -> SW11 -> SW9 自動選擇設(shè)備。當硬件不可用時,則會返回至 WARP(SW11)軟件渲染。這可作為一種通用的高性能和最佳外觀設(shè)置使用。 比起采用 DirectX9 渲染程序,視覺外觀會更好。
HardwareOnlyD9 僅使用 hardware 9 來進行渲染。
HardwareOnlyD11 僅使用 hardware 11 來進行渲染。
SoftwareOnlyD11 使用 DirectX11 WARP,這與 DirectX9 參考光柵設(shè)備相比非??欤ǖ扔布x項慢)
SoftwareOnlyD9 使用 DirectX9 參考光柵設(shè)備(非常慢)
None 如果圖表被隱藏或者在背景中處于非使用狀態(tài),設(shè)置 DeviceType 為 None,可以將圖表資源釋放給其他圖表。
GPUPreference
chart.ChartRenderOptions.GPUPreference = GPUPreference.SystemSetting;
適用于帶有雙圖形適配器系統(tǒng)的計算機,主要是帶有集成了低性能 GPU 的 CPU/芯片組和較高性能圖形 GPU(例如 AMD 或者 Nvidia)的筆記本電腦。
SystemSetting 使用在 Windows、AMD 或 Nvidia 控制面板的圖形設(shè)置中可選擇的選項。
PreferHighPerformanceGraphics 使用高性能 GPU(若系統(tǒng)中存在)。通常會帶來更佳的新能表現(xiàn),但能耗較高。
PreferLowPowerGraphics 使用較低性能的集成 GPU(即便系統(tǒng)中安裝有高性能的
GPU)默認情況下,PreferHighPerformanceGraphics 為首選。不要取消此項會獲得最佳的性能。
FontsQuality
chart.ChartRenderOptions.FontsQuality = FontsRenderingQuality.High;
Low 性能最佳,字體邊緣更光滑。仔細選擇字體類型,獲得最合意的外觀效果。
Mid 其性能與 Low 幾乎相似。字體邊緣同樣具有反鋸齒效果。此項為默認設(shè)置。
High 外觀最佳,但對性能表現(xiàn)有很大影響。
注意: 出于渲染技術(shù)限制,透明背景不適用于采用 High 質(zhì)量設(shè)置的 DirectX 11 渲染,但可適用于 DirectX9 。
AntiAliasLevel
chart.ChartRenderOptions.AntiAliasLevel = 1;
全屏反鋸齒系數(shù)。其實用性取決于硬件。值越大,外觀越好,但是性能越差。設(shè)置 0 或 1 以達到性能最大化。
WaitForVSync
chart.ChartRenderOptions.WaitForVSync = true;
Copyright Arction Ltd 2009-2019 47
建議: 保持默認值。 啟用后,持續(xù)渲染,直到下一次刷新(例如,1/60 秒的下一個倍數(shù))。這只是暫時性建議,例如采用當與外部屏幕捕獲應(yīng)用程序同步,以防止出現(xiàn)條 帶化,或當屏幕頂部的圖像與屏幕底部不同步時。這可能顯示為中斷的波形數(shù)據(jù)。在啟用后,特別是在 WPF 中,性能會受到明顯影響
UpdateType
chart.ChartRenderOptions.UpdateType = ChartUpdateTypes.Sync;
Sync (default): 圖表同步更新。圖表在最后一次 EndUpdate()調(diào)用后更新,或者當設(shè)置屬性(或調(diào)用一個 method)會改變圖表時更新。屬性的改變(沒有
BeginUpdate…EndUpdate)會引發(fā)即時渲染新幀。
Async: 圖表以異步方式更新。圖表在屬性改變后將盡快更新,但是圖表將在隨后的某個的點渲染一個新幀。這也許讓圖表在某些情況下更方便使用。
LimitedFrameRate: 幀率受限于在 FrameRateLimit 屬性中規(guī)定的值。0 = 無限制。例如,如果想要最大每秒刷新 10 次,則設(shè)置值為 10。這與 Async 選項類似,但會防止在第一個幀之后立即渲染新的幀,如此以來,減少幀率,但節(jié)省了系統(tǒng)資源。
注意! 確保在 LimitedFrameRate 和 Async 模式下正確的線程處理。如果異步更新圖表,并且圖表屬性也同時更新,可能會引發(fā)沖突,導致圖表或應(yīng)用程序奔潰。
InvokeRenderingInUIThread
chart.ChartRenderOptions.InvokeRenderingInUIThread = true;
在應(yīng)用程序中使用后臺時,來自該線程的所有 UI 更新都必須通過 Invoke(在 WinForms中為 Control.Invoke(),在 WPF 中為 Dispatcher.Invoke())
在啟用后,渲染部分將使用內(nèi)部調(diào)用來處理 UI 線程。
默認值為 False,因為以線程安全的方式設(shè)置屬性和調(diào)用方法也應(yīng)該要注意到,即使啟用了此屬性,也要防止在圖表的內(nèi)部狀態(tài)中發(fā)生線程沖突。
HeadlessMode
chart.ChartRenderOptions.HeadlessMode = true;
將此值設(shè)置為 True,可以在后臺服務(wù)、控制臺應(yīng)用程序或其他沒有用戶界面的應(yīng)用程序中使用圖表。
DPI 處理器
默認情況下,WPF 應(yīng)用程序支持 DPI(Dots Per Inch 每英寸點數(shù)),而 WinForms 應(yīng)用程序不支持。此外,DPIs 還可用以代替像素來測量尺寸大小。LightningChart 不支持 Per-Monitor DPI 感 知,但支持系統(tǒng)感知,這意味著 WPF 應(yīng)用程序支持 DPI 系統(tǒng)。 在 WinForms 中,默認 DPI 為 72,但若加載了 wpf .dll 文件的話可以忽略,該值會變?yōu)?96。
然而,當移動到具有不同 DPI 設(shè)置的另一個屏幕時,LightningChart 不會自動調(diào)整大小。要啟用大小調(diào)整,需要把 ChartOptions 中的 AllowDPIChangeInduceWindowsResize 屬性設(shè)置為 true ?;蛘撸脩艨梢宰缘?OnDPIChanged 事件并更改它的 allowWindowResize 屬性。這些在WinForms 不起作用。
// 啟動自動調(diào)整大小
chart.Options.AllowDPIChangeInduceWindowResize = true;
// 通過 OnDPIChanged –事件
chart.OnDPIChanged += chart_OnDPIChanged;
private void chart_OnDPIChanged(LightningChartUltimate chart, float dpix, float dpiy, ref bool
allowWindowResize) {
allowWindowResize = true; }
DpiHelper 類
LightningChart 的 DpiHelper 類,包含與 DPI 相關(guān)的問題的 helper 類。
DpiAware 聲明系統(tǒng)進程是否被 DPI 感知。但是,目前還無法區(qū)分系統(tǒng)感知和 per-monitor 感知。bool isDPIAware = DpiHelper.DpiAware;
DpiXFactor/ DpiYFactor 是屏幕寬度/高度的系統(tǒng) DPI 的有效縮放系數(shù)。該系數(shù)說明了在 X/Y 方向上每一個 DPI 有多少個實際像素。
float dpiXFactor = DpiHelper.DpiXFactor;
DipToPx and PxToDip 方法使用系統(tǒng) DPI 設(shè)置將 DIP 轉(zhuǎn)換為像素,反之亦然。它們可以轉(zhuǎn)換單個點或像素,也可以轉(zhuǎn)換矩形的大小和位置值。
double pixelValue = DpiHelper.DipToPx(dipValue);
反鋸齒
通過 AntiAliasing 屬性可以控制反鋸齒,即根據(jù)相關(guān)組件通過一個布爾值或 LineAntialias 枚舉設(shè)置。對于后者而言,目前有兩個可用的選項:
seriesEventMarker.Symbol.Antialiasing = true; pointLineSeries.LineStyle.AntiAliasing = LineAntialias.Normal;
圖表的 AntiAliasLevel 系數(shù)也會影響反鋸齒效果。這一系數(shù)基于所選的渲染引擎(DirectX9 和DirectX11)來定義應(yīng)用的反鋸齒模式。設(shè)置反鋸齒級別為 0 或 1,結(jié)果是渲染時不應(yīng)用反鋸齒,即使個別組件的 AntiAliasing 屬性設(shè)置為 true 或 LineAntialias.Normal。
通過圖表的渲染選項可以設(shè)置 AntiAliasLevel 值:
chart.ChartRenderOptions.AntiAliasLevel = 2;
DirectX 11 反鋸齒
在 DirectX11 中,當用反鋸齒渲染時,有幾個共同的特點應(yīng)該考慮到:
LineAntiAliasingType.ALAA;Alpha-blending 反鋸齒
LineAntiAliasingType.QLAA;Quadrilateral 反鋸齒
chart.ChartRenderOptions.LineAAType2D = LineAntiAliasingType.ALAA;
RasterizerStateDescription 的 IsMultisampleEnabled 和 IsAntialiasedLineEnabled 設(shè)置還會以以下方式(只適用于渲染線條 line rendering)影響 QLAA 和 ALAA 渲染:
注意!利用 DirectX11 進行 3D 渲染時,除非設(shè)置 AntiAliasLevel 值為 0 或 1,否則所有三角線都總是用反鋸齒渲染。
京ICP備09015132號-996 | 違法和不良信息舉報電話:4006561155
© Copyright 2000-2026 北京哲想軟件有限公司版權(quán)所有 | 地址:北京市海淀區(qū)西三環(huán)北路50號豪柏大廈C2座11層1105室
北京哲想軟件集團旗下網(wǎng)站:哲想軟件 | 哲想動畫