最近在C#下调用NPlot生成股票K线图,由于用的WPF框架,而NPlot是基于WinForm开发的。所以不能直接引用。具体做法如下: NPlot源码Microsoft .NET Framework 4.5版
1、引入DLL
创建工程后需要引入WindowsFormsIntegration.dll和System.Windows.Forms.dll两个Dll。WindowsFormsIntegration.dll负责整合WPF和Windows。
2、在xaml中添加命名空间标签
xmlns:WinFormIntegration="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
3、添加宿主容器
<WinFormIntegration:WindowsFormsHost
x:Name="winFormsHost"
Grid.Row="1"
Width="Auto"
Grid.ColumnSpan="2">
<!--在此添加WinForm控件-->
</WinFormIntegration:WindowsFormsHost>
本例完整的xaml文件:
<Window
x:Class="AxyDeal.MainWindow"
Title="MainWindow"
Height="600"
Width="1080"
xmlns:local="clr-namespace:AxyDeal.comcontrol"
xmlns:WinFormIntegration="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
>
<Grid>
<DockPanel>
<Menu
DockPanel.Dock="Top">
<MenuItem
Header="文件">
<MenuItem
Header="打开">
<MenuItem
Header="1.txt"></MenuItem>
<MenuItem
Header="2.txt"></MenuItem>
<MenuItem
Header="3.txt"></MenuItem>
</MenuItem>
<MenuItem
Header="退出"
Name="miExit"
Click="miExit_Click"></MenuItem>
</MenuItem>
<MenuItem
Header="编辑">
<MenuItem
Header="复制"></MenuItem>
<MenuItem
Header="粘贴"></MenuItem>
</MenuItem>
</Menu>
<ToolBar
DockPanel.Dock="Top"
Height="40">
<Button>
<Image
Source="images/logo_email.png"></Image>
</Button>
<Button>
<Image
Source="images/logo_dropbox.png"></Image>
</Button>
<Button>
<Image
Source="images/logo_evernote.png"></Image>
</Button>
</ToolBar>
<TabControl
DockPanel.Dock="Left" >
<TabItem
Header="TabItem">
<Grid
Background="#FFE5E5E5"/>
</TabItem>
<TabItem
Header="TabItem">
<Grid
Background="#FFE5E5E5"/>
</TabItem>
</TabControl>
<Grid
Height="Auto"
Width="Auto"
Background="AliceBlue">
<Grid.RowDefinitions>
<RowDefinition
Height="Auto"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<local:TickerControl
x:Name="tickerControl"
Grid.Row="0"
Height="50"
Grid.ColumnSpan="2"
Grid.RowSpan="1"
Width="686"
VerticalAlignment="Top"
HorizontalAlignment="Center"
Visibility="Visible"
Margin="1,0,0,0" ></local:TickerControl>
<WinFormIntegration:WindowsFormsHost
x:Name="winFormsHost"
Grid.Row="1"
Width="Auto"
Grid.ColumnSpan="2">
<!--在此添加WinForm控件-->
</WinFormIntegration:WindowsFormsHost>
</Grid>
</DockPanel>
</Grid>
</Window>
4、在代码中引入WinForm控件
这里声明了两个要引入的变量
//Form实例
private
Form kLineForm =
new Form();
//要引入的NPlot控件
private
NPlot.Windows.PlotSurface2D
KLinePS;
然后在MainWindow方法中添加:
//把Form添加的xaml中创建的宿主容器
this.winFormsHost.Child =
this.kLineForm;
KLinePS =
new NPlot.Windows.PlotSurface2D();
//把NPlot控件添加的Form中
this.kLineForm.Controls.Add(this.KLinePS);
至此可以在WPF中任意使用NPlot了。
使用NPlot是一款免费又开源的.Net平台下的图表控件,能做各种曲线图,柱状图,饼图,散点图,股票图等。
来源:CSDN
作者:凡梦_
链接:https://blog.csdn.net/mpegfour/article/details/78561706