仅作为操作记录,大佬请跳过。
背景
c#调用matlab显示image的dll,将本地图片嵌入到winform
博主本想将matlab中plot生成的图片,显示在c#的winform里,但后来发现直接调用plot的dll行不通(c#会出错),后来查到实现c#嵌入matlab生成的图片
有两类方法——感谢大佬文章—传送门1
1、先把Figure保存为图片,然后WinForm窗体去读取图片;
2、利用Windows API 技术,动态的获取窗体句柄,然后嵌入到WinForm中。
利用第二种API的方法可能会复杂些,博主找了很长时间的资料,找到了用第一种方法的文章,【实测成功】
重要参考——传送门2
步骤
总述:博主按照“重要参考——大佬博主文章传送门”里的方法,建立了matlab的函数文件、生成dll文件、visual studio 2019 中设置引用、书写c#代码【此步骤略有不同】、解决x64的bug
1、建立matlab函数文件
2、matlab中生成dll
可参考博主文章——传送门
3、visual studio中建立c#的winform
visual studio中建立c#的winform,并添加引用MWArray.dll、showimage.dll
写c#代码
在form1.cs[设计]
里设计界面
在form1.cs
里写代码:
program.cs
里不用管
5、完整源代码
博主分享完整源代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MathWorks.MATLAB.NET.Arrays;
using System.IO;
using showimage;
namespace b1imageshow
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
showimageclass a = new showimageclass();
a.showimage();
//a.ppp("D:\\ffinal\\2.bmp");
Stream s = File.Open("E:\\code\\matlab\\matlabmixwithc#\\21.png", FileMode.Open);//21.bmp是在matlab里面存的照片
//Stream s = File.Open("D:\\ffinal\\21.bmp", FileMode.Open);//21.bmp是在matlab里面存的照片
pictureBox1.Image = Image.FromStream(s);
//将图像显示在picturebox1上
}
}
}
展示