所以,我用 GUI、C# 制作了一些简单的图像处理程序。例如,我想更改 HSV 颜色模型中的图像颜色,将每个像素从 RGB 转换回来。
我的程序通过用户选择加载一些图片,并使用其图形上下文在表单的一个面板中显示它。然后用户可以通过移动滚动条、单击按钮、选择某些图像区域等来处理这张图片。当他这样做时,我需要实时逐像素更改所有图片。所以,我写了类似的东西:
for (int x = 0; x < imageWidth; x++)
for (int y = 0; y < imageHeight; y++)
Color c = g.GetPixel(x, y);
c = some_process_color_function_depending_on_user_controls(c);
g.SetPixel(x, y)
即使我在内存中(不在屏幕上)使用图形,GetPixel 和 SetPixel 函数的工作速度也很慢(所以,由于我的程序运行速度很慢,我对其进行了分析,并解释说这两个函数最多会减慢我的程序)。因此,当用户移动滑块或选中复选框时,我无法在一段时间内处理大图片。
请帮忙!我该怎么做才能让我的程序更快?我不同意将其他第三方库用于图形或更改编程语言!