You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET Core WPF项目中复用基于ZedGraph的旧WinForms代码?

.NET Core WPF项目迁移CIE色度图方案

一、保留普朗克轨迹数据的旧代码

当然能复用这部分代码——普朗克轨迹数据属于纯计算逻辑,和WinForms、ZedGraph这些UI框架完全无关:

  • 把这部分代码单独抽成类库项目(选.NET Standard 2.0或者.NET Core 3.0+版本),.NET Core WPF项目直接引用这个类库就行。
  • 如果原代码和ZedGraph的绘图逻辑绑在一起,只需要提取数据生成、轨迹点计算的部分,把ZedGraph的API调用删掉就行。

二、.NET Core WPF中用ZedGraph的方法

官方ZedGraph确实停更且不支持.NET Core,但有社区做的移植版:

  • 去NuGet搜ZedGraph.NETCore包(注意选下载量高、维护活跃的版本),这是适配.NET Core的WinForms版本。
  • .NET Core 3.0及以上已经支持WindowsFormsHost了,步骤如下:
    1. 给WPF项目装WindowsFormsIntegration NuGet包。
    2. XAML里加命名空间:
      xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
      xmlns:zed="clr-namespace:ZedGraph;assembly=ZedGraph.NETCore"
      
    3. 用WindowsFormsHost包裹ZedGraph的控件:
      <wfi:WindowsFormsHost>
          <zed:GraphControl x:Name="zedGraph" />
      </wfi:WindowsFormsHost>
      
    4. 后台代码里调用提取好的普朗克轨迹数据,用ZedGraph的API画图就行。

三、替代ZedGraph的.NET Core WPF方案

不想碰ZedGraph的话,这几个方案更适配:

1. OxyPlot

开源跨平台,支持WPF等多种框架,完全兼容.NET Core/.NET 5+:

  • 用PlotView控件,把普朗克轨迹数据转成OxyPlot的DataPoint集合,加到图表系列里就行。
  • 示例代码:
    var plotModel = new PlotModel { Title = "CIE 色度图" };
    var planckSeries = new LineSeries { Title = "普朗克轨迹" };
    foreach (var point in 你的轨迹点集合)
    {
        planckSeries.Points.Add(new DataPoint(point.X, point.Y));
    }
    plotModel.Series.Add(planckSeries);
    plotView.Model = plotModel;
    

2. LiveCharts2

现代交互式图表库,支持WPF和.NET Core,自带缩放、tooltip等交互功能:

  • 把轨迹数据转成ObservablePoint集合,绑定到LineSeries就能渲染。

3. 纯WPF自定义绘图

如果图表逻辑不复杂,直接用WPF自带的Canvas、Path控件画:

  • 把CIE色度图的轮廓、普朗克轨迹的坐标转成WPF的PathGeometry,在XAML或后台代码里渲染就行。这种方式完全不用第三方库,灵活度最高,但得自己处理坐标转换。

内容的提问来源于stack exchange,提问作者Martin Hung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 12:41:26