c# - 无法在 .NET 中使用 C# 创建可缩放的 png 图像

标签 c# .net image-processing visual-studio-2012 raster

我正在尝试基于字符串创建图像。图像需要是光栅的(否则如果我需要缩小它会失去分辨率)。我正在使用以下代码:

Bitmap bitmapimage = new Bitmap(200, 100);
Graphics bitmapGraphics = Graphics.FromImage(bitmapimage );   
bitmapGraphics .DrawString("test", new Font("Arial",50), Brushes.Black, new Point(0, 0));              
bitmapimage .Save("Image.png", System.Drawing.Imaging.ImageFormat.png);
textPictureBox.Image = bitmapimage ;

我得到的是这样的图像(缩放后):

test image

这是为什么?

最佳答案

我认为您误解了“光栅”的含义。光栅图像是网格,每个网格位置有一个像素。当您将光栅图像放大到足够远时,即使使用抗锯齿等技术,网格也会变得清晰可见。

另一方面,

矢量图 图形是基于算法 的。它们存储有关如何在给定 Canvas 上复制图像的说明。当您缩放矢量图像时,图像将保持清晰,因为它仍在按照说明进行操作,而不是简单地缩放之前的渲染。

所有主要图像类型(bmp、gif、png、jpeg)都是光栅类型,不支持矢量图形。 png 图像是您的示例光栅化的...事实上,不可能创建不是光栅化的png 图像。矢量图像的一个例子是某些字体类型或 Photoshop (psd) 文件(有点......实际上,Photoshop 文件最终往往比矢量更光栅)。

在这种情况下,最简单的解决方案可能是首先将图像绘制得非常大……大到不需要放大,然后使用足够大的字体来填充空间。您还需要确保您使用的是完全矢量绘制的字体。

关于c# - 无法在 .NET 中使用 C# 创建可缩放的 png 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343176/

相关文章:

c# - 从 PostAsJsonAsync 获取响应

c# - 反序列化json时出现异常

c# - 我应该如何创建后台线程?

javascript - 图片前面的自定义文字

c# - 减小大图像尺寸的最安全方法

c# - 使用递归函数解析xml值时出错

c# - 适用于 .net 的 Foursquare SDK

.net - 如何使用 asp.net framework 4.0 进行单点登录

c# - 如何从 xml 构建 .xsd 文件?

python - python中的命中或未命中形态在图像中查找结构未提供所需的结果