///<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); } }