C# 如何将图像作为CAD应用的背景处理

C# 如何将图像作为CAD应用的背景处理,c#,C#,我的应用程序用于为飞行模拟器设计机场。用户可以添加一个或多个图像作为背景。图像可以精确地调整大小,然后用作模板来设置跑道、围裙等特征 我使用了一个第三方图形库(Piccolo),它有一个image类(据我所知,它是System.Drawing.image的一个简单包装器) 到目前为止,除了允许用户添加图像、调整图像大小等等,我几乎没有做什么。用户有时抱怨性能差也就不足为奇了。我们告诉他们不要加载大图像(高达100k看起来还可以),但不要阻止它们,100Mb位图已经被使用,结果非常糟糕 我需要用几

我的应用程序用于为飞行模拟器设计机场。用户可以添加一个或多个图像作为背景。图像可以精确地调整大小,然后用作模板来设置跑道、围裙等特征

我使用了一个第三方图形库(Piccolo),它有一个image类(据我所知,它是System.Drawing.image的一个简单包装器)

到目前为止,除了允许用户添加图像、调整图像大小等等,我几乎没有做什么。用户有时抱怨性能差也就不足为奇了。我们告诉他们不要加载大图像(高达100k看起来还可以),但不要阻止它们,100Mb位图已经被使用,结果非常糟糕

我需要用几种方法来解决这个问题。首先,通过将他们使用的任何图像转换为有效格式(大小与定义),其次,通过确保加载的图像大小适合尺寸-目前,我没有做任何具体的处理,例如调整2000 x 2000图像的大小以适应500 x 500的显示区域

应用程序的默认1:1显示表示每像素1米。一旦用户调整了图像的大小,使其精确匹配,我认为图像的最佳资源是将其重新采样到该大小,这是正确的吗?我知道,如果用户放大到1:1以上,图像的清晰度就会下降

我完全不知道如何处理图像。我看过一些图像处理库(ImageMagick和dotIamge的免费版本),首先用于将输入图像转换为标准图像,其次用于调整大小-重新采样。事实上,他们做的远远超过了我的需要


非常感谢任何指针。

是的,重新采样使位图不必为每种绘画不断重新缩放,这将产生很大的不同。默认的Graphics.InterpolationMode可以生成漂亮的图像,但并不便宜

另一个大问题是位图的像素格式。Format32bppPArgb比大多数视频适配器上的任何其他格式都快10倍

    private static Bitmap Resample(Image img, Size size) {
        var bmp = new Bitmap(size.Width, size.Height, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
        using (var gr = Graphics.FromImage(bmp)) {
            gr.DrawImage(img, new Rectangle(Point.Empty, size));
        }
        return bmp;
    }

谢谢-我现在正在对此进行一些测试。