GDI +的功能如何如此之快?

时间:2015-12-14 11:18:48

标签: c# gdi+ gdi

我正在尝试重新创建非常简单的GDI +函​​数,例如缩放和旋转图像。原因是一些GDI函数不能在多个线程上完成(我发现了一个使用进程的工作,但不想进入它),并且在一个线程上处理数千个图像并没有几乎削减它。 我的图像也是灰度图像,因此自定义函数只需要担心一个值而不是4个。

无论我尝试重新创建什么样的函数,即使在高度优化的情况下,它也总是慢几倍,尽管与GDI相比大大简化了(我在1D字节数组上操作,每个字节一个字节)像素)

我想也许我旋转每个点的方式可能是不同的,所以我完全把它拿出来,并且基本上有一个遍历每个像素的功能,只是将它设置为它已经是的,这只是粗略的与GDI的速度相关联,即使GDI正在进行实际旋转并且每个像素更改4个不同的值。

是什么让这成为可能?有没有办法使用自己的函数匹配它?

1 个答案:

答案 0 :(得分:3)

GDI +代码是用C / C ++编写的,甚至可能部分用于汇编。一些GDI +调用可能使用GDI,这是一个旧的且经过优化的API。即使你知道所有像素操作技巧,你也会发现难以匹配性能。