/// <summary> /// 取得所有圖表引擎資訊 /// </summary> /// <returns>返回值:ChartEngineInformation類別的陣列</returns> public ChartEngineInformation[] GetChartEngineInformations() { ChartEngineInformation[] cChartEngineInfos = null; lock (__cChartEngineInfos) { int iCount = __cChartEngineInfos.Count; cChartEngineInfos = new ChartEngineInformation[iCount]; __cChartEngineInfos.Values.CopyTo(cChartEngineInfos, 0); } return(cChartEngineInfos); }
/// <summary> /// 建立 Painter 繪製引擎抽象類別 /// </summary> /// <param name="handle">控制項 handle</param> /// <param name="engineInformation">圖表引擎資訊類別</param> /// <returns>返回值: AbstractPaintEngine 繪製引擎抽象類別</returns> public AbstractPaintEngine CreatePainter(IntPtr handle, ChartEngineInformation engineInformation) { AbstractPaintEngine cPaintEngine = null; if (engineInformation != null) { Assembly cAssembly = Assembly.LoadFile(Path.GetFullPath(engineInformation.Location)); Type cType = cAssembly.GetType(engineInformation.ChartEngine); cPaintEngine = Activator.CreateInstance(cType, handle) as AbstractPaintEngine; } return(cPaintEngine); }
/// <summary> /// 更新圖表引擎資訊 /// </summary> /// <param name="chartDirectory">圖表引擎資料夾</param> public void Refresh(string chartDirectory) { string[] sDllFiles = Directory.GetFiles(chartDirectory, "*.dll"); int iLength = sDllFiles.Length; if (iLength > 0) { for (int i = 0; i < iLength; i++) { string sDllFile = sDllFiles[i]; string sAssembly = Path.GetFileNameWithoutExtension(sDllFile); FileVersionInfo cFileInfo = FileVersionInfo.GetVersionInfo(sDllFile); ChartEngineInformation cChartEngineInfo = null; lock (__cChartEngineInfos) { if (!__cChartEngineInfos.TryGetValue(sAssembly, out cChartEngineInfo)) { string sChartEngine = null; Assembly cAssembly = Assembly.LoadFile(Path.GetFullPath(sDllFile)); Type[] cTypes = cAssembly.GetTypes(); foreach (Type cType in cTypes) { if (CheckAbstractOrderService(cType)) { sChartEngine = cType.FullName; break; } } cChartEngineInfo = new ChartEngineInformation(); cChartEngineInfo.ChartEngine = sChartEngine; __cChartEngineInfos.Add(sAssembly, cChartEngineInfo); } } //更新圖表引擎資訊 cChartEngineInfo.Company = cFileInfo.CompanyName; cChartEngineInfo.Description = cFileInfo.Comments; cChartEngineInfo.FileVersion = cFileInfo.FileVersion; cChartEngineInfo.ModuleName = sAssembly; cChartEngineInfo.Location = sDllFile; cChartEngineInfo.ProductVersion = cFileInfo.ProductVersion; } } }
/// <summary> /// 建構子 /// </summary> /// <param name="context">繪製圖表內容的目標元件</param> /// <param name="chartEngine">圖表引擎資訊(ZChart 要使用的圖表引擎模組資訊)</param> public ZChart(Control context, ChartEngineInformation chartEngine) { __cChartRect = context.ClientRectangle; __cPainter = PaintManager.Manager.CreatePainter(context.Handle, chartEngine); __cLayers = new List <Layer>(8); __cStatus = new InputDeviceStatus(); __cBehavior = new Behavior(this, context, __cStatus); __cBehavior.SetCustomActions(__cPainter.GetActions()); __cContext = context; __cContext.Paint += context_onPaint; __cContext.Resize += context_onResize; __cContext.KeyDown += Context_onKeyDown; __cContext.KeyUp += Context_onKeyUp; __cContext.MouseUp += context_onMouseUp; __cContext.MouseDown += context_onMouseDown; __cContext.MouseMove += context_onMouseMove; __cContext.MouseWheel += context_onMouseWheel; }