WPF和winform中使用ZedGraph

5 篇文章 2 订阅

参考使用:
在WPF中使用WinForm控件方法

【ZedGraph】基础
首先添加两个dll文件:WindowsFormsIntegration.dll,System.Windows.Forms.dll。

在这里插入图片描述
2.添加ZedGraph.dll

在WPF中使用zedGraphControl

3.在WPF的XAML文件中代码如下:

<Window x:Class="WpfZedgraph.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     
        xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"    
        xmlns:wf ="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
        xmlns:zedgraph="clr-namespace:ZedGraph;assembly=ZedGraph"
        Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
    <Grid HorizontalAlignment="Left" Height="322.4" VerticalAlignment="Top" Width="518.4">
        <DataGrid HorizontalAlignment="Left" VerticalAlignment="Top" Height="322" Width="518"/>
        <wfi:WindowsFormsHost Margin="10,35,21.4,10.4">
            <zedgraph:ZedGraphControl x:Name="zedGraphControl" />
        </wfi:WindowsFormsHost>
       
    </Grid>

</Window>

说明: wfi:WindowsFormsHos </wfi:WindowsFormsHost>即为WinForm控件的宿主容器,每一个宿主容器只能放一个WinForm控件.
注意:如上我添加的WinForm控件如在指定其Name时,必须加前缀x:,如添加Lable时<wf:Label x:Name=“lblName” Text="我是WPF中的WinForm控件” />,否则后台代码无法访问。

     PointPairList list2 = new PointPairList();
     private void showChart1(double[] value)//数组value为形参showChart1给他赋值
        {
            double maxvalue = value[0];
            for (int j = 0; j < value.Length; j++)
            {
                if (maxvalue < value[j])
                {
                    maxvalue = value[j];
                }
            }
            list2.Clear();//清空数组
            zedGraphControl1.GraphPane.Title.Text = "Spectrogram";
            zedGraphControl1.GraphPane.XAxis.Title.Text = "X";
            zedGraphControl1.GraphPane.YAxis.Title.Text = "Y";
            zedGraphControl1.GraphPane.XAxis.Scale.Min = 0;              //X轴最小值0           
            zedGraphControl1.GraphPane.XAxis.Scale.Max = 520;
            zedGraphControl1.GraphPane.XAxis.Scale.MinorStep = 10;
            zedGraphControl1.GraphPane.XAxis.Scale.MajorStep = 1000;
            zedGraphControl1.GraphPane.YAxis.Scale.Min = 0;
            zedGraphControl1.GraphPane.YAxis.Scale.Max = maxvalue + 2000;           //这里要改成动态的,大小随波形改变
            zedGraphControl1.GraphPane.YAxis.Scale.MinorStep = 200;
            zedGraphControl1.GraphPane.YAxis.Scale.MajorStep = 1000;
            zedGraphControl1.AxisChange();

            for (int j = 0; j < value.Length; j++)
                list2.Add(j, value[j]);

            this.Dispatcher.Invoke(RefreshInterface);                  //切换到UI线程更新界面,如果没有这句就不会出图

            // RefreshInterface();
        }

        //刷新界面
        private void RefreshInterface()
        {

            zedGraphControl1.GraphPane.CurveList.Clear();//这句话的意思是把曲线清零
            zedGraphControl1.GraphPane.AddCurve("", list2, System.Drawing.Color.Red, SymbolType.None);//绘制图表
            // zedGraphControl.AxisChange();//刷新界面
            zedGraphControl1.Refresh();
        }

一些代码解释
myPane.Title.FontSpec.Family = “宋体”;//设置字体样式
//清除X、Y轴对面的轴显示
zedGraphControl1.GraphPane.Chart.Border.IsVisible = false;//图表边框设置,边界,是否可见
zedGraphControl1.GraphPane.XAxis.MajorTic.IsOpposite = false;
zedGraphControl1.GraphPane.YAxis.MajorTic.IsOpposite = false;
zedGraphControl1.GraphPane.YAxis.MinorTic.IsOpposite = false;
zedGraphControl1.GraphPane.XAxis.MinorTic.IsOpposite = false;

zedGraphControl1.GraphPane.AddCurve(“1”, list1, Color.Red , SymbolType.Circle);// 1:曲线名称
zedGraphControl1.GraphPane.AddCurve(“2”, list2, Color.Blue, SymbolType.Diamond);// 2:曲线名称
遇到的问题:
在这里插入图片描述
注意这里的名字跟你调用的那个ZedGraph.dll在XAML中的名字一样。
在这里插入图片描述

在winForm中使用zedGraphControl

可以参考这位博主的篇文章,点击这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值