WPF-Math is a .NET library for rendering mathematical formulae using the LaTeX typesetting style, for the WPF framework.
It supports the following .NET runtimes:
The simplest way of using WPF-Math is to render a static formula in a XAML file as follows.
<Window ... xmlns:controls="clr-namespace:WpfMath.Controls;assembly=WpfMath">
<controls:FormulaControl Formula="\left(x^2 + 2 \cdot x + 2\right) = 0" />
</Window>
For a more detailed sample, check out the example project. It shows the usage of data binding and some advanced concepts.
The following example demonstrates usage of TexFormula
API to render the image into a PNG file using the RenderToPng
extension method:
using System.IO;
using WpfMath;
namespace ConsoleApplication2
{
internal class Program
{
public static void Main(string[] args)
{
const string latex = @"\frac{2+2}{2}";
const string fileName = @"T:\Temp\formula.png";
var parser = new TexFormulaParser();
var formula = parser.Parse(latex);
var pngBytes = formula.RenderToPng(20.0, 0.0, 0.0, "Arial");
File.WriteAllBytes(fileName, pngBytes);
}
}
}
If you need any additional control over the image format, consider using the GetRenderer
API:
using System;
using System.IO;
using System.Windows.Media.Imaging;
using WpfMath;
namespace ConsoleApplication2
{
internal class Program
{
public static void Main(string[] args)
{
const string latex = @"\frac{2+2}{2}";
const string fileName = @"T:\Temp\formula.png";
var parser = new TexFormulaParser();
var formula = parser.Parse(latex);
var renderer = formula.GetRenderer(TexStyle.Display, 20.0, "Arial");
var bitmapSource = renderer.RenderToBitmap(0.0, 0.0);
Console.WriteLine($"Image width: {bitmapSource.Width}");
Console.WriteLine($"Image height: {bitmapSource.Height}");
var encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
using (var target = new FileStream(fileName, FileMode.Create))
{
encoder.Save(target);
Console.WriteLine($"File saved to {fileName}");
}
}
}
}
You may also pass your own IElementRenderer
implementation to TexFormula.RenderFormulaTo
method if you need support for any alternate rendering engines.
Build the project using .NET SDK 5.0. WPF-Math requires C# 8 and F# 4.7 support. Here's the build and test script:
$ dotnet build --configuration Release
$ dotnet test
To approve the test results if they differ from the existing ones, execute the scripts/approve-all.ps1
script using PowerShell or PowerShell Core.
To publish the package, execute the following command:
$ dotnet pack --configuration Release
The library was originally ported from the JMathTex project, copyright 2004-2007 Universiteit Gent. The port was originally named WPF-TeX and was written and maintained by Alex Regueiro. It was later available as WPF-Math on Launchpad, but was unmaintained from 2011 until it was revived in its current form.
The project code and all the resources are distributed under the terms of MIT license.
The fonts cmex10.ttf
, cmmi10.ttf
, cmr10.ttf
, and cmsy10.ttf
and cmtt10.ttf
are under the Knuth License.
WPF-Math started as a direct port of JMathTeX project written in Java, reusing both code and resources. JMathTeX is distributed under the terms of GNU GPL v2 license. WPF-Math, being a derived work, has a permission from JMathTeX authors to be redistributed under the MIT license. See the Licensing history for the details.
We're very grateful to JMathTeX authors for their work and allowing to redistribute the derived library. JMathTeX is written by:
Window类继承自ContentControl类。 可以通过设置WindowStyle=“None”,完全移除窗口框架,从而创建一个可完全定制的窗口,但是有各种各样的不方便,所以本文使用WindowChrome.WindowChrome来自定义窗口 基础知识 Window类基本属性 属性 作用 值 AllowsTransparency 窗口是否透明 True 允许其他窗口透过该窗口显示 Fals
title author date CreateTime categories WPF 使用封装的 SharpDx 控件 lindexi 2019-6-5 9:4:36 +0800 2018-4-24 10:46:1 +0800 WPF D2D DirectX SharpDX 渲染 上一篇告诉大家如何在 WPF 使用 SharpDx ,看起来代码比较复杂,所以本文告诉大家如何使用我封装的控件。 本
title author date CreateTime categories 从 dotnet core 3.0 的特性让 WPF 布局失效讨论 API 兼容 lindexi 2019-4-17 10:5:35 +0800 2019-04-17 09:41:42 +0800 WPF dotnet 在 dotnet core 3.0 为了支持 IEEE 浮点数计算标准,修改了 Math.Max 的
参考资料: ForNeVeR/wpf-math A WPF TikZ Editor (TikzEdt)
WPF(Windows Presentation Foundation) 是微软推出的用于构建桌面客户端应用程序的 UI 框架,具有应用程序模型、控件、图形、布局、数据绑定和安全性等功能,属于 .NET Framework 3.0 的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。 WPF 的核心是一个利用现代图形硬
本文向大家介绍wpf DependencyObject,包括了wpf DependencyObject的使用技巧和注意事项,需要的朋友参考一下 示例 源自于 DispatcherObject 关键成员 概要 从派生的类DependencyObject参与依赖项属性系统,该系统包括注册依赖项属性以及提供有关此类属性的标识和信息。由于依赖项属性是WPF开发的基础,因此所有WPF控件最终都源自Depen
本文向大家介绍wpf DispatcherObject,包括了wpf DispatcherObject的使用技巧和注意事项,需要的朋友参考一下 示例 源自于 Object 关键成员 概要 WPF中的大多数对象都源自DispatcherObject,它提供了用于处理并发和线程的基本构造。这些对象与分派器关联。 只有在Dispatcher上创建的线程可以直接访问DispatcherObject。若要从
本文向大家介绍wpf View,包括了wpf View的使用技巧和注意事项,需要的朋友参考一下 示例 视图是M V VM中的“ V” 。这是您的用户界面。您可以使用Visual Studio拖放式设计器,但是大多数开发人员最终都会对原始XAML进行编码,这与编写HTML相似。 这是允许编辑Customer模型的简单视图的XAML 。与其创建一个新视图,不如将其粘贴到WPF项目的MainWindow
本文向大家介绍wpf 模型,包括了wpf 模型的使用技巧和注意事项,需要的朋友参考一下 示例 该模型是M VVM中的第一个“ M” 。该模型通常是一个类,其中包含您要通过某种用户界面公开的数据。 这是一个非常简单的模型类,它具有几个属性: 此类实现INotifyPropertyChanged暴露PropertyChanged事件的接口。只要其中一个属性值发生更改,就应引发此事件-您可以在上面的代码
本文向大家介绍wpf 实现INotifyPropertyChanged,包括了wpf 实现INotifyPropertyChanged的使用技巧和注意事项,需要的朋友参考一下 示例 INotifyPropertyChanged是绑定源(即DataContext)使用的接口,以使用户界面或其他组件知道属性已更改。WPF在看到PropertyChanged事件引发时会自动为您更新UI 。最好在所有视图