当前位置: 首页 > news >正文

一种在winfrom窗体中显示计算公式的解决方案

前言

Winform窗体程序开发一些计算软件的时候,经常需要展示一些计算公式,之前都是用公式截取图片的形式展示到界面上。那么有没有一种方法可以直接将公式表达式在窗体程序中动态生成。

本文使用WpfMath,通过将变量动态拼接成LaTeX语法的公式字符串,并将公式转换成图片动态在窗体界面展示出来。

步骤

1.在Nuget安装WpfMath2.1.0

 

image

 

2.添加PresentationCore, PresentationFramework, WindowsBase的引用

 

image

 

image

 

3.封装方法将公式渲染为图片及调用

 1 public Form1()
 2 {
 3 InitializeComponent();
 4 string gs2 = @"A=\frac{\pi D^{2}}{4}=0.283\mathrm{m}^{2}";
 5 RenderMathFormula(gs2, pictureBox2);
 6 
 7 string gs1 = @"y=A\sin(\omega x+\varphi)+k";
 8 RenderMathFormula(gs1, pictureBox1);
 9 
10 }
11 
12 /// <summary>
13 /// 将 LaTeX 公式渲染为 WinForms 图片
14 /// </summary>
15 private void RenderMathFormula(string latex,PictureBox pictureBox)
16 {
17 Image image = null;
18 try
19 {
20 // 1. 获取解析器单例
21 var parser = WpfTeXFormulaParser.Instance;
22 // 2. 解析公式
23 var formula = parser.Parse(latex);
24 // 3. 创建WPF渲染环境
25 var environment = WpfTeXEnvironment.Create(
26 style: TexStyle.Display,
27 scale: 1,
28 systemTextFontName: "Microsoft YaHei"
29 );
30 // 4. 渲染为WPF位图
31 BitmapSource bitmapSource = formula.RenderToBitmap(environment);
32 // 5. 转换为 WinForms 可用的 Bitmap
33 using (var stream = new MemoryStream())
34 {
35 // 编码为 PNG
36 var encoder = new PngBitmapEncoder();
37 encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
38 encoder.Save(stream);
39 stream.Position = 0;
40 // 创建 WinForms Bitmap
41 var bitmap = new System.Drawing.Bitmap(stream);
42 // 显示在 PictureBox 中
43 image = bitmap;
44 }
45 }
46 catch (TexException ex)
47 {
48 MessageBox.Show($"公式语法错误: {ex.Message}", "渲染失败",MessageBoxButtons.OK, MessageBoxIcon.Warning);
49 }
50 catch (Exception ex)
51 {
52 MessageBox.Show($"公式渲染失败: {ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
53 }
54 pictureBox.Image=image;
55 pictureBox.SizeMode=PictureBoxSizeMode.AutoSize;
56 }
57 
58 private void button1_Click(object sender, EventArgs e)
59 {
60 string gs3 = @"y="+A.Text+@"\sin(" + ω.Text + @" x+" + φ.Text + @")+" + k.Text;
61 RenderMathFormula(gs3, pictureBox3);
62 }

 

image

 

http://www.jsqmd.com/news/491389/

相关文章:

  • 电源动态响应测试
  • MobileCoin智能合约开发入门:构建基于隐私支付的去中心化应用
  • GARbro:视觉小说资源浏览器
  • 2026年智能客服哪家好?AI客服机器人与系统选购指南 - 品牌2026
  • Pleaserun vs 手动编写init脚本:效率提升10倍的秘密
  • 2026高职物联网毕业起薪一般多少?就业方向、岗位薪资与升职路径全解析
  • 2026年角钢厂家怎么选?柒鑫合以工字钢、槽钢、角钢为核心,构建全品类型钢供应能力 - 深度智识库
  • MoonShine Admin Panel完全解析:为何它是2024年最值得尝试的Laravel后台框架?
  • OpenClaw技术详解:原理、使用方法、应用场景与架构设计
  • laravel-menu性能优化:高效生成与缓存策略
  • 2026高端全屋智能家居品牌推荐排行 权威评测 全场景AI/家居一体化 - 极欧测评
  • PHing配置文件完全手册:build.xml编写指南与示例
  • go-face完全指南:用Go语言构建高性能人脸识别系统的终极教程
  • 2026 年云南大棚管实力厂家合集 本地口碑出众的钢材服务商盘点 - 深度智识库
  • 对比实验:VoiceprintRecognition-Pytorch中8种损失函数的性能差异
  • 2026年靠谱智能客服系统盘点,适合企业使用的客服工具推荐 - 品牌2026
  • 综述自免疾病中的关键生物标志物研究,解密自身免疫性疾病的“预警密码”
  • 银泰百货卡变现指南:这些平台真的值得信赖吗? - 团团收购物卡回收
  • MobileCoin与传统支付对比:为什么隐私支付是未来移动金融的必然趋势
  • dbblog核心技术栈揭秘:Elasticsearch+Redis+RabbitMQ如何提升博客性能
  • 零基础学习算法:gh_mirrors/algorithms2/Algorithms项目快速上手指南
  • 京东E卡快速回收攻略,秒变现金! - 团团收购物卡回收
  • Memorizz:项目的核心功能/场景
  • 自免双抗时代来临!哪些靶点将改写自身免疫性疾病现状?
  • Similar 与 Insta 集成:打造 Rust 项目的快照测试工作流
  • Obsidian Importer路线图:未来将支持哪些新功能和导入格式?
  • 2026西安电线电缆回收厂家推荐:铜铁铝、空调、设备、整厂回收实力榜 - 深度智识库
  • 分析粮库专用三角形挡粮门实力供应商排名,前十名有哪些? - mypinpai
  • iOSRE完全指南:从入门到精通iOS逆向工程的终极教程
  • onenet数据推送设置 - f