c# - 完全被难住了 - System.Runtime.InteropServices.ExternalException:“GDI+ 中发生了一般错误。”
问题描述
我编写了一个快速的 winform 应用程序,它可以获取一些输入的文本,根据所有系统字体生成图像,然后将这些图像合并为一个图像以提供字体示例。为方便起见,我将这两个功能分开,一个用于生成图像,另一个用于合并它们,这样我就可以删除单个图像中不需要的字体。昨天一切正常,但现在在保存合并图像时(“complete.save("consolidated.png");) 它给出了无用的 GDI+ 错误。我检查了路径和访问,一切都很好而且正确.什么都没有锁定图像,所以我完全不知道是什么原因造成的。有什么想法吗?下面的代码
StringBuilder sb = new StringBuilder();
List<string> files = FileSystemUtilities.ListFiles("fonts");
int height = 0;
int width = 0;
Bitmap test = new Bitmap(1000, 1000);
Graphics gTest = Graphics.FromImage(test);
Font font = new Font("Arial", 128);
int numWidth = 0;
int count = 1;
foreach (var file in files)
{
sb.AppendFormat("{0}\r", FileSystemUtilities.GetFileName(file).Replace(".png", string.Empty));
Bitmap bitmap = new Bitmap(file);
height = height + bitmap.Height + 10;
if (width < bitmap.Width)
{
width = bitmap.Width;
}
SizeF numSize = gTest.MeasureString(Convert.ToString(count), font);
if (numWidth < numSize.Width)
{
numWidth = Convert.ToInt32(numSize.Width + 1);
}
bitmap.Dispose();
count++;
}
test.Dispose();
gTest.Dispose();
numWidth = numWidth + 10;
count = 1;
Bitmap complete = new Bitmap(width + numWidth, height);
Graphics g = Graphics.FromImage(complete);
g.FillRectangle(Brushes.White, 0, 0, complete.Width, complete.Height);
int y = 0;
foreach (var file in files)
{
Bitmap bitmap = new Bitmap(file);
g.DrawString(Convert.ToString(count) + ".", font, Brushes.Black, 0, y);
g.DrawImage(bitmap, numWidth, y);
y = y + bitmap.Height + 10;
bitmap.Dispose();
count++;
}
string filename = "consolidated.png";
if (File.Exists(filename))
{
File.Delete(filename);
}
g.Dispose();
complete.Save("consolidated.png");
complete.Dispose();
TextFileUtilities.WriteTextFile("consolidated.txt", sb.ToString());
解决方案
原来是因为身高太高……我看不到。谢谢你所有的评论和帮助我。
推荐阅读
- python - 硒超时异常
- node.js - 是否可以在 express 应用程序中运行节点工作程序
- python - 如何忽略特定索引?Python
- python - 如何解决此正则表达式问题以匹配可选列和空格?
- python - 带有 TypeError 的自动测试暂停:“str”对象不可调用
- python - Celery - 将任务名称分配给组中的任务
- linux - 如何使用 SFTP 在一行中传递 UserName@HostId、密码、端口号?
- typescript - 在 Angular 12 中使用友好的 URL 而不是 ID 呈现链接
- xcode - 在 Mach-O 文件 Payload/Runner.app/PlugIns/OneSignalNotificationServiceExtension 中找不到合适的架构来链接 arm64
- excel - 在保留代码的同时将 ComboBox 移动/复制到不同的工作表