首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏林德熙的博客

    dotnet 读 WPF 源代码笔记 GlyphRun 的 DeviceFontName 的功能是什么

    FilterXmlInvalidChar(GlyphRun glyphRun) { ...// 忽略其他代码 GlyphRun filtered = new GlyphRun( glyphRun.GlyphTypeface, glyphRun.BidiLevel glyphRun.PixelsPerDip, glyphRun.GlyphIndices, glyphRun.BaselineOrigin filteredCharacters, glyphRun.DeviceFontName, glyphRun.ClusterMap , glyphRun.CaretStops, glyphRun.Language

    35940编辑于 2023-04-07
  • 来自专栏林德熙的博客

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

    本文不会告诉大家特别基础的知识,基础部分还请看官方文档: GlyphRun Class (System.Windows.Media) 如果可以的话,顺便也将 DirectWrite 的官方文档也读一次 对象,需要有以下参数才能构建出绘制的文本内容 字体 字号 文本内容 文本绘制画刷 文本绘制的坐标 尽管 GlyphRun 对象需要的参数很多,然而很多参数都是可以默认获取的 字体 在 GlyphRun 传入编号和 Unicode 的值 设置字号 在 GlyphRun 里面,支持输入多个文字和单个文字,在输入时,可以给每个文字指定字号。 字号其实是一个上层的概念,而在 GlyphRun 需要使用底层的文本渲染概念,也就是字符的 AdvanceWidth 的值。 用来绘制 var glyphRun = new GlyphRun ( glyphTypeface, bidiLevel: 0, isSideways: false

    2.2K10发布于 2021-10-08
  • 来自专栏施炯的IoT开发专栏

    OpenGL ES Wrapper on Windows Mobile

    首先声明OpenGLFont font和GlyphRun title,然后在SetupScene使用: OpenGLFont font; GlyphRun title; protected override     font = new OpenGLFont(new Font(FontFamily.GenericSerif, 12, FontStyle.Regular));     title = new GlyphRun

    1.1K50发布于 2018-01-10
  • 来自专栏林德熙的博客

    WPF 使用 VisualBrush 在 4k 加 200 DPI 设备上某些文本不渲染看不见问题

    但是在一些 4k 加百分之 200 的 DPI 缩放设备上,看不到某些 GlyphRun 的内容,本文记录此问题和对应的解决方法 前置要求: 4k 分辨率屏幕 百分之两百 DPI 缩放 使用 GlyphRun 直接或间接 绘制到 VisualBrush 中 在 WPF 的底层文本绘制都是采用 GlyphRun 绘制,因此可以认定为影响为全部文本,以及对应的文本控件 现象: 有某些文本内容不绘制渲染出来,看不见某些文本内容 DrawingVisual 对象,在这里面重新绘制出矩形然后用 VisualBrush 做贴图 这样做的优势在于可以利用到 WPF 无视贴图的命中测试的特性,而提升性能 但是带来的问题就是存在某些 GlyphRun

    1.3K20发布于 2021-11-15
  • 来自专栏林德熙的博客

    dotnet 读 WPF 源代码笔记 渲染层是如何将字符 GlyphRun 画出来的

    从业务代码构建出来 GlyphRun 对象,在 WPF 的渲染层里,如何利用 GlyphRun 提供的数据将字符在界面呈现出来。 因为文本渲染里面,一个非常重要的技术就是让字符比较小的时候,可以在屏幕上清晰显示,这就是采用 GlyphRun 进行 ClearType 等方式渲染的最重要意义,然而这不是没有成本的。 回顾一下,在 UI 线程完成文本排版布局之后,即可知道每个 GlyphRun 应该在哪里渲染,有哪些字符可以使用相同的前景色和字号等字符属性,可以放入到相同的一个 GlyphRun 里面一起绘制。 执行渲染逻辑时进行一些优化判断,决定是否走 GlyphRun 渲染还是 Geometry 渲染。 如果执行 GlyphRun 方式渲染,就需要用到 DirectWrite 提供的方法将字形转换为 Alpha 纹理的方式,通过绘制矩形叠加蒙层的方式进行渲染文本字符。

    1.4K30编辑于 2023-04-07
  • 来自专栏林德熙的博客

    WPF 更改 DrawingVisual 的 RenderOpen 用到的对象的内容将持续影响渲染效果

    我为了实现让文本可以叠加特效的功能,因此不采用 GlyphRun 类型,同时为了减少 Geometry 对象的创建,我不能在 Geometry 对象上叠加变换 因为为了让文本的字能排版对,我就需要设置每个字在界面绘制的坐标

    1.4K30编辑于 2021-12-23
  • 来自专栏czwy的博客

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

    ImageSource、Rect VideoDrawing 结合播放视频文件的媒体播放器,使用指定矩形边界绘制(复制)播放器中当前画面 Player、Rect GlyphRunDrawing 表示渲染GlyphRun 的绘图对象 GlyphRun、ForegroundBrush DrawingGroup 组合各种类型的图画(Drawing)创建混合图画,并可以使用它的一个属性一次性为整个组合应用效果 BitmapEffect

    3.8K11编辑于 2024-02-01
  • 来自专栏老司机的简书

    CoreText实现图文混排

    bridge CTLineRef)arrLines[i]; NSArray * arrGlyphRun = (NSArray *)CTLineGetGlyphRuns(line);//获取GlyphRun 数组(GlyphRun:高效的字符绘制方案) for (int j = 0; j < arrGlyphRun.count; j ++) {//遍历CTRun数组

    2K20发布于 2018-08-22
领券