我正在尝试基于字符串创建图像。图像需要是光栅的(否则如果我需要缩小它会失去分辨率)。我正在使用以下代码:
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 ;
我得到的是这样的图像(缩放后):
这是为什么?
最佳答案
我认为您误解了“光栅”的含义。光栅图像是网格,每个网格位置有一个像素。当您将光栅图像放大到足够远时,即使使用抗锯齿等技术,网格也会变得清晰可见。
另一方面,矢量图 图形是基于算法 的。它们存储有关如何在给定 Canvas 上复制图像的说明。当您缩放矢量图像时,图像将保持清晰,因为它仍在按照说明进行操作,而不是简单地缩放之前的渲染。
所有主要图像类型(bmp、gif、png、jpeg)都是光栅类型,不支持矢量图形。 png 图像是您的示例是光栅化的...事实上,不可能创建不是光栅化的png 图像。矢量图像的一个例子是某些字体类型或 Photoshop (psd) 文件(有点......实际上,Photoshop 文件最终往往比矢量更光栅)。
在这种情况下,最简单的解决方案可能是首先将图像绘制得非常大……大到不需要放大,然后使用足够大的字体来填充空间。您还需要确保您使用的是完全矢量绘制的字体。
关于c# - 无法在 .NET 中使用 C# 创建可缩放的 png 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343176/