///<summary>改变示波器图形样式</summary>
 ///<param name="graphStyle">图形样式</param>
 public void ChangeGraphStyle(Enum_GraphStyle graphStyle)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeGraphStyle(m_Oscilloscope, 0u, graphStyle);
     }
 }
 ///<summary>改变坐标轴线宽</summary>
 ///<param name="axisLineWidth">坐标轴线宽</param>
 public void ChangeAxisLineWidth(uint axisLineWidth)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeAxisLineWidth(m_Oscilloscope, axisLineWidth);
     }
 }
 ///<summary>改变基线类型</summary>
 ///<param name="index">图形序号</param>
 ///<param name="baselineType">基线类型</param>
 public void ChangeBaselineType(uint index, Enum_BaselineType baselineType)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeBaselineType(m_Oscilloscope, index, baselineType);
     }
 }
 ///<summary>改变示波器图形样式</summary>
 ///<param name="index">图形序号</param>
 ///<param name="graphStyle">图形样式</param>
 public void ChangeGraphStyle(uint index, Enum_GraphStyle graphStyle)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeGraphStyle(m_Oscilloscope, index, graphStyle);
     }
 }
 ///<summary>改变基线类型</summary>
 ///<param name="baselineType">基线类型</param>
 public void ChangeBaselineType(Enum_BaselineType baselineType)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeBaselineType(m_Oscilloscope, 0u, baselineType);
     }
 }
 ///<summary>改变示波器刷新模式</summary>
 ///<param name="refreshMode">刷新模式</param>
 public void ChangeRefreshMode(Enum_RefreshMode refreshMode)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeRefreshMode(m_Oscilloscope, refreshMode);
     }
 }
 ///<summary>改变垂直平移</summary>
 ///<param name="offset">位移值</param>
 public void ChangeTranslateY(int offset)
 {
     if (m_Oscilloscope != IntPtr.Zero && Dll.ChangeTranslateY(m_Oscilloscope, offset) && PropertyChanged != null)
     {
         PropertyChanged(Property.TranslateY, Dll.TranslateY(m_Oscilloscope));
     }
 }
 ///<summary>改变坐标轴颜色</summary>
 ///<param name="axisColor">坐标轴颜色</param>
 public void ChangeAxisColor(uint axisColor)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeAxisColor(m_Oscilloscope, axisColor);
     }
 }
 ///<summary>改变线宽</summary>
 ///<param name="index">图形序号</param>
 ///<param name="lineWidth">线宽</param>
 public void ChangeLineWidth(uint index, byte lineWidth)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeLineWidth(m_Oscilloscope, index, lineWidth);
     }
 }
 ///<summary>替换全部数据</summary>
 ///<param name="value">值</param>
 public void Replace(float[] value)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.Replace(m_Oscilloscope, 0u, value);
     }
 }
 ///<summary>替换全部数据</summary>
 ///<param name="index">图形序号</param>
 ///<param name="value">值</param>
 public void Replace(uint index, float[] value)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.Replace(m_Oscilloscope, index, value);
     }
 }
 ///<summary>改变基线偏移值</summary>
 ///<param name="lineWidth">基线偏移值</param>
 public void ChangeOffset(int offset)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeOffset(m_Oscilloscope, 0u, offset);
     }
 }
 ///<summary>存入数据</summary>
 ///<param name="index">图形序号</param>
 ///<param name="value">值</param>
 public void Push(uint index, float value)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.Push(m_Oscilloscope, index, value);
     }
 }
 ///<summary>存入数据</summary>
 ///<param name="value">值</param>
 public void Push(float value)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.Push(m_Oscilloscope, 0u, value);
     }
 }
 ///<summary>是否可用</summary>
 ///<param name="index">图形序号</param>
 ///<param name="isEnabled">是否可用</param>
 public void ChangeIsEnabled(uint index, bool isEnabled)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeIsEnabled(m_Oscilloscope, index, isEnabled);
     }
 }
 ///<summary>是否可用</summary>
 ///<param name="isEnabled">是否可用</param>
 public void ChangeIsEnabled(bool isEnabled)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeIsEnabled(m_Oscilloscope, 0u, isEnabled);
     }
 }
 ///<summary>改变是否自动归零</summary>
 ///<param name="isAutoTranslate">是否自动归零</param>
 public void ChangeIsAutoTranslate(bool isAutoTranslate)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeIsAutoTranslate(m_Oscilloscope, 0u, isAutoTranslate);
     }
 }
 ///<summary>改变自动归零</summary>
 ///<param name="autoTranslateOffset">自动归零偏移值(如果是非数值则不使用此功能,否则将最接近横轴的数值归零后加上此值。)</param>
 public void ChangeAutoTranslate(float autoTranslateOffset)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeAutoTranslate(m_Oscilloscope, 0u, autoTranslateOffset);
     }
 }
 ///<summary>当初始化完成时</summary>
 protected override void OnSourceInitialized(EventArgs e)
 {
     base.OnSourceInitialized(e);
     m_Window      = (new WindowInteropHelper(this)).Handle;
     Oscilloscopes = Dll.CreateOscilloscopes(m_Window, FPS());
     Initialize();
 }
 ///<summary>改变是否自动归零</summary>
 ///<param name="index">图形序号</param>
 ///<param name="isAutoTranslate">是否自动归零</param>
 public void ChangeIsAutoTranslate(uint index, bool isAutoTranslate)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeIsAutoTranslate(m_Oscilloscope, index, isAutoTranslate);
     }
 }
 ///<summary>改变基线偏移值</summary>
 ///<param name="index">图形序号</param>
 ///<param name="offset">基线偏移值</param>
 public void ChangeOffset(uint index, int offset)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeOffset(m_Oscilloscope, index, offset);
     }
 }
 ///<summary>改变线宽</summary>
 ///<param name="lineWidth">线宽</param>
 public void ChangeLineWidth(byte lineWidth)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeLineWidth(m_Oscilloscope, 0u, lineWidth);
     }
 }
 ///<summary>清空</summary>
 public void Clear()
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.Clear(m_Oscilloscope);
     }
 }
 ///<summary>改变示波器前景色</summary>
 ///<param name="foreground">前景色</param>
 public void ChangeForegroundColor(uint foreground)
 {
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeForegroundColor(m_Oscilloscope, 0u, foreground);
     }
 }
 ///<summary>改变示波器背景色</summary>
 ///<param name="background">背景色</param>
 public void ChangeBackgroundColor(uint background)
 {
     BackColor = ColorHelper.FromArgb(background);
     if (m_Oscilloscope != IntPtr.Zero)
     {
         Dll.ChangeBackgroundColor(m_Oscilloscope, background);
     }
 }
 ///<summary>DPI改变时</summary>
 protected override void OnDpiChanged(DpiScale oldValueDpi, DpiScale newDpi)
 {
     base.OnDpiChanged(oldValueDpi, newDpi);
     if (Oscilloscopes != IntPtr.Zero)
     {
         Dll.RefreshDPI(Oscilloscopes);
     }
 }
 ///<summary>改变垂直缩放</summary>
 ///<param name="offset">差值</param>
 public void ChangeScaleY(float offset)
 {
     if (m_Oscilloscope != IntPtr.Zero && Dll.ChangeScaleY(m_Oscilloscope, offset) && PropertyChanged != null)
     {
         PropertyChanged(Property.TranslateY_Limit, Dll.TranslateY_Limit(m_Oscilloscope));
         PropertyChanged(Property.TranslateY, Dll.TranslateY(m_Oscilloscope));
         PropertyChanged(Property.ScaleY, Dll.ScaleY(m_Oscilloscope));
     }
 }
 ///<summary>改变垂直缩放极限值</summary>
 ///<param name="value">值(>=1)</param>
 public void ChangeScaleLimitY(uint value)
 {
     if (m_Oscilloscope != IntPtr.Zero && Dll.ChangeScaleLimitY(m_Oscilloscope, value) && PropertyChanged != null)
     {
         PropertyChanged(Property.TranslateY_Limit, Dll.TranslateY_Limit(m_Oscilloscope));
         PropertyChanged(Property.TranslateY, Dll.TranslateY(m_Oscilloscope));
         PropertyChanged(Property.ScaleY, Dll.ScaleY(m_Oscilloscope));
         PropertyChanged(Property.ScaleY_Limit, Dll.ScaleY_Limit(m_Oscilloscope));
     }
 }
 ///<summary>重绘</summary>
 protected override void OnPaint(PaintEventArgs e)
 {
     if (m_IsUninitialized)
     {
         e.Graphics.Clear(BackColor);
     }
     else
     {
         Dll.Refresh(m_Oscilloscope);
     }
 }
 ///<summary>关闭后</summary>
 protected override void OnClosed(EventArgs e)
 {
     base.OnClosed(e);
     if (Closeable != null)
     {
         Closeable.Close();
     }
     Release();
     if (Oscilloscopes != IntPtr.Zero)
     {
         Dll.CloseOscilloscopes(Oscilloscopes);
     }
 }