首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在WPF中使用GeometryDrawing绘制文本

是通过将文本转换为几何路径来实现的。GeometryDrawing是WPF中的一个图形对象,它可以用于绘制几何形状,包括文本。

要在WPF中使用GeometryDrawing绘制文本,可以按照以下步骤进行操作:

  1. 创建一个GeometryDrawing对象,并设置其Brush属性为所需的文本颜色。
  2. 创建一个FormattedText对象,用于表示要绘制的文本内容、字体、大小等信息。
  3. 使用FormattedText对象的BuildGeometry方法创建一个Geometry对象,表示文本的几何路径。
  4. 将Geometry对象设置为GeometryDrawing对象的Geometry属性。
  5. 将GeometryDrawing对象添加到合适的绘图容器中,如DrawingGroup或DrawingVisual。

下面是一个示例代码,演示如何在WPF中使用GeometryDrawing绘制文本:

代码语言:csharp
复制
// 创建一个GeometryDrawing对象
GeometryDrawing textDrawing = new GeometryDrawing();

// 设置文本颜色
textDrawing.Brush = Brushes.Black;

// 创建FormattedText对象
FormattedText formattedText = new FormattedText(
    "Hello, World!",               // 文本内容
    CultureInfo.CurrentCulture,    // 文本所使用的区域性信息
    FlowDirection.LeftToRight,     // 文本的流动方向
    new Typeface("Arial"),         // 字体
    12,                            // 字号
    Brushes.Black                   // 字体颜色
);

// 创建文本的几何路径
Geometry textGeometry = formattedText.BuildGeometry(new Point(0, 0));

// 设置GeometryDrawing对象的Geometry属性
textDrawing.Geometry = textGeometry;

// 将GeometryDrawing对象添加到绘图容器中
DrawingGroup drawingGroup = new DrawingGroup();
drawingGroup.Children.Add(textDrawing);

// 在WPF中显示绘制结果
DrawingImage drawingImage = new DrawingImage(drawingGroup);
Image image = new Image();
image.Source = drawingImage;

这样,就可以使用GeometryDrawing在WPF中绘制文本了。通过调整FormattedText对象的属性,可以实现不同字体、大小、样式的文本绘制。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WPF 简单聊聊如何使用 DrawGlyphRun 绘制文本

WPF 里面,提供的使用底层的方法绘制文本是通过 DrawGlyphRun 的方式,此方法适合用在需要对文本进行精细控制的定制化控件上。...此方法特别底层而让调用方法比较复杂,本文告诉大家一些简单的使用方法 本文也属于 WPF 渲染系列博客,更多渲染相关博客请看 渲染相关 开始之前,我是来劝退的,如果没有特别的需求,还是不推荐使用 DrawGlyphRun...的方式进行文本绘制。...DrawGlyphRun 绘制需要创建 GlyphRun 对象,需要有以下参数才能构建出绘制文本内容 字体 字号 文本内容 文本绘制画刷 文本绘制的坐标 尽管 GlyphRun 对象需要的参数很多,... WPF 源代码里面,可以看到底层的 Fallback 字体是 #GLOBAL USER INTERFACE 这个特殊的字体,为了保持和 TextBlock 差不多的逻辑,可以使用如下方法作为字体回滚

1.6K10

WPF性能优化:形状(Shape)、几何图形(Geometry)和图画(Drawing)的使用

什么是形状、几何图形和图画 WPF,形状(Shape)是专门用于表示直线、椭圆、矩形以及多边形的绘图图元(primitive),可以绘制到窗口或控件上。...派生类名称 说明 LineSegment PathFigure的两个点之间创建一条直线。 ArcSegment PathFigure的两个点之间创建一条椭圆弧。...BezierSegment PathFigure的两个点之间创建一条三次贝塞尔曲线 QuadraticBezierSegment PathFigure的两个点之间创建一条二次贝塞尔曲线 PolyLineSegment...这些类包括 类名 说明 主要属性 GeometryDrawing 使用指定的画刷(Brush)和画笔(Pen)绘制几何图形。...DrawingVisual作为一个轻量级的图画类,具有较好的性能,需要大量绘制工作的场景是一个不错的选择。

1.2K10

WPF 使用 Skia 绘制 WriteableBitmap 图片

本文告诉大家如何在 WPF使用 SkiaSharp 调用 Skia 这个全平台底层渲染框架,使用绘制命令 WriteableBitmap 图片上绘制内容 谷歌提出了 Skia 全平台渲染框架,这是一个很底层的框架...那么如何在 WPF 使用 SkiaSharp 绘制出 WriteableBitmap WPF使用?...Skia绘制" Click="Button_OnClick"> WPF 里面创建一个 WriteableBitmap 可以使用如下代码 private...Skia 里面和 D2D 一样有 Surface 的概念,也就是可以将绘制命令输入到 Skia 绘制到 Surface 上,而绘制内容将会作为像素数组放在传入的数组里面 小伙伴是否还记得 WPF 使用不安全代码快速从数组转...WriteableBitmap 的方法,其实 Skia WriteableBitmap 绘制的本质就是这样 开始绘制之前需要调用 WriteableBitmap 的 Lock 方法,接着绘制完成之后

2.2K20

使用 Pandas Python 绘制数据

在有关基于 Python 的绘图库的系列文章,我们将对使用 Pandas 这个非常流行的 Python 数据操作库进行绘图进行概念性的研究。...这非常方便,你已将数据存储 Pandas DataFrame ,那么为什么不使用相同的库进行绘制呢? 本系列,我们将在每个库制作相同的多条形柱状图,以便我们可以比较它们的工作方式。...我们使用的数据是 1966 年至 2020 年的英国大选结果: image.png 自行绘制的数据 继续之前,请注意你可能需要调整 Python 环境来运行此代码,包括: 运行最新版本的 Python...本系列文章,我们已经看到了一些令人印象深刻的简单 API,但是 Pandas 一定能夺冠。...) 只有四行,这绝对是我们本系列创建的最棒的多条形柱状图。

6.8K20

WPF 使用 MAUI 的自绘制逻辑

本文仅仅只会涉及到渲染的一部分 制作一个跨平台的 UI 框架有很多个方式,例如使用各个平台提供的原生控件,也就是说 Windows 平台上,采用 WinUI 的按钮, iOS 平台上使用苹果提供的按钮... MAUI 里面,既可以使用平台提供的原生控件进行拼接制作界面,也可以使用基于的各个平台的独立 UI 框架提供的自绘能力绘制界面,也可以调用到底层的渲染逻辑进行渲染 但,这也不是免费的。...我接下来将告诉大家,如何使用 Maui 提供的框架层,配合 WPF 提供具体的自绘逻辑,两个放在一起,从而实现 WPF 使用 MAUI 的自绘逻辑 核心的实现方法是 WPF 提供画布功能,让 MAUI...可以 WPF 上面画元素。... MAUI 里面提供框架,以及具体的绘制指导,和上层 API 调用 本文以下部分将用到还没有发布,但是也差不多快完成的 Microsoft.Maui.Graphics.Xaml.WPF 提供的功能。

1.7K20

WPF 使用 Skia 解析绘制 SVG 图片

本文告诉大家如何在 WPF 里面,使用 Skia 解析绘制 SVG 图片。...本文也适合控制台使用 SkiaSharp 解析绘制 SVG 图片,本文的 WPF 部分只是 Skia 绘制完成之后,将 Skia 的内容绘制WPF 的 WriteableBitmap 图片,从而在界面显示...使用 Skia 可以很完美输出 SVG 图片作为绘制的输出。...另一个库是 Svg.Skia 库,这是给 Skia 专用的库 接下来咱将使用这个 Svg.Skia 库, WPF 应用里,加载 SVG 文件,使用 Skia 渲染 按照惯例的第一步就是安装 NuGet...参数基本上就是约定了像素数据的表示和透明度支持 拿到 SKBitmap 对象,再根据 WPF 使用 Skia 绘制 WriteableBitmap 图片 提供的方法进行绘制 var writeableBitmap

1.7K30

WPF 简易手绘笔迹支持回放的方法

本文来告诉大家一个简易的方法 啥都不说,先来一张图 抬手的时候绘制出刚才所画的笔迹,做动画画出笔迹,就和手绘差不多的效果 下面来告诉大家核心的原理 WPF ,可以使用一个叫路径动画的功能,通过这个功能可以传入一个...Path 路径就能动画出这个轨迹 WPF ,笔迹的底层绘制使用 Geometry 进行绘制。...而刚好 Geometry 就是 Path 的数据层,也就是手绘出来的笔迹可以拿到 Geometry 然后创建出 Path 路径进行轨迹动画 WPF ,有 OpacityMask 可以实现蒙层,这个蒙层的功能就是只要蒙层里面有非透明的像素部分...触发动画之前需要保存这个笔迹,用来给动画使用,如下面代码 private void MainWindow_StylusUp(object sender, StylusEventArgs...StrokeGrid 上面添加一个 DrawingBrush 作为 OpacityMask 的内容,此时 OpacityMask 上面的任何绘制,都会修改蒙层的内容 这就是整个的实现方法了 而有很多细节需要继续处理的

41120

WPF 实现融合效果

之前的一篇文章,我使用 Win2D 实现了融合效果,效果如下: 不过 Win2D 不适用于 WPF WPF 可以使用 BlurEffect 配合自定义 Effect 实现类似的效果。...自定义 Effect Win2D ,实现融合效果的步骤是先使用 GaussianBlurEffect 两个元素间产生粘连在一起的半透明像素,再用 ColorMatrixEffect 加强对比对,... WPF 我们可以直接使用自带的 BlurEffect 实现高斯模糊,效果如下: 接下来需要加强对比度。...WPF 没有 ColorMatrixEffect 的替代品,不过我们可以使用 HLSL(高级着色器语言)编写 PixelShader 并生成自定义的 WPF Effect。...编写 PixelShader 可以使用 Shazzam Shader Editor, walterlv 有一篇关于如何使用这款编辑器的教程: WPF 像素着色器入门:使用 Shazzam Shader

1.2K20

WindowsXamlHost: WPF使用 UWP 控件库的控件

WindowsXamlHost: WPF使用 UWP 的控件(Windows Community Toolkit) 一文,我们说到了 WPF 引入简单的 UWP 控件以及相关的注意事项...image.png ▲ 创建一个 UWP 控件库 image.png ▲ 选择 SDK 版本 对 WPF 项目的准备工作 你依然需要阅读 WindowsXamlHost: WPF使用...image.png ▲ 生成的文件已复制到 WPF 目录下 WPF 项目中间接引用 UWP 控件库 现在, WPF 项目中开启所有文件夹的显示,然后将 UWP 项目中生成的文件添加到 WPF...项目中: image.png ▲ WPF 的项目中添加 UWP 的控件库 为了能够每次编译 WPF 项目的时候确保 UWP 项目先编译,需要为 WPF 项目设置项目依赖。... WPF 项目中使用 UWP 控件库的控件 这时, WindowsXamlHost 中就可以添加 UWP 控件库的 MainPage 了。

5.8K20

WPF DrawingContext 的 push 如何使用

先写一个简单的 OnRender ,创建一个类 GearcawralSarBule 继承 FrameworkElement 就可以重写 OnRender 方法,为了让WPF调用 OnRender 方法就需要把...如果有玩过 ps 就知道, ps 有图层,使用 DrawingContext 的 push 方法就是创建一个图层,而且做的变换都是对这个图层做变换,使用 push 创建图层之后需要使用 pop 把图层画进去...push 需要在画完使用 pop ,不然会出现下面继续对 DrawingVisual 进行画的时候就会发现还是原先的图层 除了 PushTransform 方法还有很多 push 方法,如 PushClip...drawingContext.PushOpacity(0.09); drawingContext.DrawDrawing(DrawingVisual.Drawing); 还有一个 PushGuidelineSet 参见:WPF...:基于物理像素的图形绘制 - Aaron Lu - 博客园 ----

1.6K10

WPF DrawingContext 的 push 如何使用

先写一个简单的 OnRender ,创建一个类 GearcawralSarBule 继承 FrameworkElement 就可以重写 OnRender 方法,为了让WPF调用 OnRender 方法就需要把...如果有玩过 ps 就知道, ps 有图层,使用 DrawingContext 的 push 方法就是创建一个图层,而且做的变换都是对这个图层做变换,使用 push 创建图层之后需要使用 pop 把图层画进去...push 需要在画完使用 pop ,不然会出现下面继续对 DrawingVisual 进行画的时候就会发现还是原先的图层 除了 PushTransform 方法还有很多 push 方法,如 PushClip...drawingContext.PushOpacity(0.09); drawingContext.DrawDrawing(DrawingVisual.Drawing); 还有一个 PushGuidelineSet 参见:WPF...:基于物理像素的图形绘制 - Aaron Lu - 博客园

41920

FluentValidationC# WPF的应用

其实它也可以用于WPF属性验证,本文主要也是讲解该组件WPF使用,FluentValidation官网是: https://fluentvalidation.net/ 。...本文需要实现的功能unsetunset 提供WPF界面输入验证,采用MVVM方式,需要以下功能: 能验证ViewModel定义的基本数据类型属性:int\string等; 能验证ViewModel定义的复杂属性...创建工程、引入库 创建.NET WPF模板解决方案(.Net Framework模板也行)WpfFluentValidation,引入Nuget包FluentValidation(属性验证使用)和Prism.Wpf...普通类 - Student 此类用作ViewModel的对象属性使用,学生类包含3个属性:名字、年龄、邮政编码。...;2.数字类型请填写数字;3.日志类型请填写日期类型"); } } 这里写的简单了点: 文本数据类型,值不能为空; 数字数据类型,必须是double类型; 日期类型,必须能使用DateTime

13910

.NET Core 3.0WPF使用IOC图文教程

我们都知道.NET Core 3.0已经发布了第六个预览版,我们也知道.NET Core 3.0现在已经支持创建WPF项目了,刚好今天写一个代码生成器的客户端的时候用到了WPF,所以就把WPF创建以及使用...0 Error(s) Time Elapsed 00:00:01.63 我们想要实现的是引导应用程序并在MainWindow的构造函数中注入一个服务,该服务将被调用以便在应用程序的主窗口上显示一些文本...StoneGenerate.Core.csproj" /> 创建一个ITextService接口服务,这个接口将由依赖注入容器注入到MainWindow类中进行使用...App.xaml.cs文件配置我们的IOC容器,并入住我们的服务,相信做过.NET Core项目的你,对下面的代码应该都非常的熟悉,这里就不过多的解释了,省的浪费大家的宝贵时间。...Application.Resources> 接下来我们修改一下MainWindow的xaml代码以便来显示我们的文本信息

81530

问与答60: 怎样使用矩阵数据工作表绘制线条?

学习Excel技术,关注微信公众号: excelperfect 本文来源于wellsr.com的Q&A栏目,个人觉得很有意思,对于想要在工作表中使用形状来绘制图形的需求比较具有借鉴意义,特辑录于此,代码稍有修改...Q:如下图1所示,左侧是一个4行4列的数值矩阵,要使用VBA根据这些数值绘制右侧的图形。 ?...连接的过程,遇到0不连接,如果两个要连接的数值之间有其他数,则从这些数值上直接跨过。如图1所示,连接的顺序是1-2-3-4-5-6-7-8-9-10-11-12-13。...A:VBA代码如下: 'Excel中使用VBA连接单元格的整数 '输入: 根据实际修改rangeIN和rangeOUT变量 ' rangeIN - 包括数字矩阵的单元格区域 '...DeleteArrows ReDim arrRange(0) '一维数组存储单元格区域中所有大于0的整数 For Each cell In rangeIN

2.4K30

WPF 使用 Direct2D1 画图 绘制基本图形

本文来告诉大家如何在 Direct2D1 绘制基本图形,包括线段、矩形、椭圆 本文是一个系列 WPF 使用 Direct2D1 画图入门 WPF 使用 Direct2D1 画图 绘制基本图形...开始前先告诉大家为何需要使用 Direct2D ,虽然 WPF 也是基于 DX 进行渲染,但是 WPF 做了很多兼容处理,所以没有比直接使用 Direct2D 的性能高。...不过程序里的代码包括创建图形,实际上是 CPU 创建,但是因为速度很快,几乎不需要计算,所以需要的时间很短。 文字 最后就是告诉大家如何绘制文字。...绘制文字需要使用 DirectWrite ,需要先创建 DWriteFactory 然后才可以绘制文本。...绘制文本有多个方式,因为需要的很多参数都不能直接创建需要使用 DWriteFactory 创建,所以这里需要先使用下面代码 var dWriteFactory = DWriteFactory.CreateFactory

65330
领券