【问题标题】:how to know if a metafile is monochromatic or have color?如何知道图元文件是单色的还是有颜色的?
【发布时间】:2015-03-09 19:29:37
【问题描述】:

有什么方法可以知道 EMF 文件是只有黑白还是有一些颜色?您可以检查调色板或其他方式?有人可以帮我一些代码吗?我需要知道程序生成的每个文件的颜色百分比,但前提是它不是单色的,并且不想逐个像素地计算所有文件。谢谢你

【问题讨论】:

标签: c# .emf


【解决方案1】:

如果您使用的是 WinForms,这很容易做到:

首先,将 EMF 文件加载到位图中:

Image img = new Metafile(@"MyFile.emf");
var bmp = new Bitmap(img);

然后你可以使用这个函数来测试它的颜色:

bool isColor = IsColor(bmp);

private bool IsColor(Bitmap bmp)
{
    for (int x = 0; x < bmp.Width - 1; x++)
    {
        for (int y = 0; y < bmp.Height - 1; y++)
        {
            Color c = bmp.GetPixel(x, y);
            if (!(c.R == c.B && c.R == c.G))
                return true;
        }
    }

    return false;
}

基本上它测试每个像素。如果文件是灰度或单色文件,则给定像素的 RGB 值将设置为相同值。如果任何像素的 RGB 值不相等,则它必须是颜色。

【讨论】:

  • "并且不想逐个像素地计算所有文件"
猜你喜欢
  • 2021-01-16
  • 2020-10-14
  • 2015-02-04
  • 2014-12-20
  • 2010-10-13
  • 2022-01-05
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
相关资源
最近更新 更多