GDI +的惊人的解码速度和糟糕的绘制速度!

use*_*749 1 drawing gdi+ decoder


谢谢你的回答,其实我并不感到疑惑,画面1024*768像素比100*100像素慢...这是一个如此简单的逻辑..这让我感到困惑的是,DrawImage的插值算法可能会很慢,而存在很多更好的算法,它的解码器似乎可以从具有一定分辨率的jpg解码,它真的很酷,我搜索了一段时间但没有找到任何免费的lib来做这个...

真奇怪!我在Paint方法中添加以下代码.c:\ 1.jpg是5M jpg文件,大约4000*3000

// ------------------------------------------------ --------------

HDC hdc = pDC->GetSafeHdc();
bitmap = Bitmap::FromFile(L"c:\\1.jpg",true);
Graphics graphics(hdc);
graphics.SetInterpolationMode( InterpolationModeNearestNeighbor );
graphics.DrawImage(bitmap,0,0,200,200);
Run Code Online (Sandbox Code Playgroud)

以上真的很快!甚至是实时!我不认为解码5米JPG可以那么快!

// ------------------------------------------------ --------------

HDC hdc = pDC->GetSafeHdc();
bitmap = Bitmap::FromFile(L"c:\\1.jpg",true);
Graphics graphics(hdc);
graphics.SetInterpolationMode( InterpolationModeNearestNeighbor );
graphics.DrawImage(bitmap,0,0,2000,2000);
Run Code Online (Sandbox Code Playgroud)

上面的代码变得非常慢

// ------------------------------------------------ --------------

如果我添加Bitmap = Bitmap :: FromFile(L"c:\ 1.jpg",true); //进入构造

离开

    Graphics graphics(hdc);
    graphics.SetInterpolationMode( InterpolationModeNearestNeighbor );
    graphics.DrawImage(bitmap,0,0,2000,2000);
Run Code Online (Sandbox Code Playgroud)

在OnPaint方法中,代码仍然有点慢~~~

// ------------------------------------------------ ------------------

与解码相比,drawImage Process非常慢......

他们为什么以及如何做到这一点?微软是否支付了负责解码器双倍工资的男性,而不是负责编写drawingImage的男性?

Joh*_*ell 5

那么,你真正想知道的是为什么

graphics.DrawImage(bitmap,0,0,200,200);
Run Code Online (Sandbox Code Playgroud)

比...更快

graphics.DrawImage(bitmap,0,0,2000,2000);
Run Code Online (Sandbox Code Playgroud)

正确?

那么,你在第二种情况下绘制100倍像素的事实可能与它有关.