首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Drawing.Common DrawString无法在Linux中正确呈现文本

System.Drawing.Common DrawString无法在Linux中正确呈现文本
EN

Stack Overflow用户
提问于 2019-10-28 11:18:56
回答 1查看 408关注 0票数 4

所以我不确定问题是什么,我几乎已经用尽了我能想到的每一个选择。我的目标是Ubuntu 18.04 LTS上的dotnet core 3.0。在windows环境下,它工作得很好,但在这个Ubuntu环境中,文本只是不能按照支持的方式呈现出来,看起来像这样

它应该如何显示

它在Ubuntu上的显示方式

我使用的是Arial字体,并且安装了MS TrueType字体包,我已经尝试了Ubuntu原生的字体系列,但仍然是一样的。

EN

回答 1

Stack Overflow用户

发布于 2021-05-28 04:52:58

我在Fedora 34上遇到了同样的问题。

我使用这个示例文件来重现这个问题:

代码语言:javascript
复制
using System.Drawing;

Bitmap bmp = new Bitmap(200, 100);
using var gfx = Graphics.FromImage(bmp);
gfx.Clear(Color.Navy);
Font fnt = new Font("Arial", 18);
gfx.DrawString("test123", fnt, Brushes.Yellow, 10, 10);
bmp.Save("test.bmp");

(请注意,上面的代码使用.NET 5和C# 9.0编译和运行,因为它支持顶级语句https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/tutorials/top-level-statements。)

然而,结果看起来像这样:

为了解决这个问题,我运行了以下终端命令:

代码语言:javascript
复制
$ dotnet add package system.drawing.common

在此之后,重新构建并运行该程序将生成以下图像:

进行此更改后,我的.csproj文件现在看起来如下所示:

代码语言:javascript
复制
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="system.drawing.common" Version="5.0.2" />
  </ItemGroup>

</Project>

仅供参考;我偶然发现这个问题的原因是当我尝试使用ScottPlot时,我提交了一个关于它的bug:https://github.com/ScottPlot/ScottPlot/issues/1079

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58585414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档