影响使用GDI +渲染图像时间的因素

时间:2011-07-11 07:51:48

标签: c# gdi+

这是我之前的问题Speeding Up Image Handling

的后续内容

道歉,如果我应该以某种方式修改这个问题而不是开始一个新问题。

我尝试过各种不同的东西来加速在屏幕上绘制图像。

我认为压缩图像直到它变小会产生影响。然而,虽然这可能会为对象节省内存,但我认为它对绘制所需的时间没有任何影响。我尝试将图像转换为jpeg并使用100%压缩。但是,虽然这会产生块状图像,但它不会影响绘制时间。我现在认为这是因为这个

不会改变渲染的像素数

我尝试将调色板缩小为256色。这使得尺寸更小,因为它每像素使用更少的字节,但似乎不影响屏幕上的绘图。我原本以为减少GDI +必须处理的每像素字节可能会节省一些时间,但到目前为止我还不够。

我在浪费时间看压缩和调色板吗?

我认为所用的时间会受到要绘制的像素数(宽x高)的影响,并且我调整了图像的大小以匹配屏幕上显示的像素大小。我认为这是确实有效的一件事....

我已经看过如何停止对图像进行自动缩放 - 我的调整大小是否会停止,或者图像在呈现时是否仍然可以自动缩放?

我想知道我是否可以使用p / Invoke或其他API调用替换DrawImage调用(我承认我并不理解)。

1 个答案:

答案 0 :(得分:1)

您可以使用Bitblt P / Invoke直接复制图像数据。它确实需要一些初始化来将图像数据转换为显示设备理解的东西,但是这种复制操作是快速的。如果您想知道DrawImage btw中究竟发生了什么,请使用ILSpy或Reflector.NET等工具来检查方法。

有关示例,请参阅BitBlt code not working。有关Bitblt的一些信息,请参阅http://www.codeproject.com/KB/GDI-plus/flicker_free.aspx