Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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;
                }
            }
        }
Beispiel #4
0
        /// <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;
        }