谢谢大家的解答,其实我并不疑惑draw 1024*768像素比100*100像素慢...就是这么简单的一个逻辑..让我不解的是DrawImage的插值算法可能很慢,虽然存在很多更好的算法,它的解码器似乎可以从具有一定分辨率的 jpg 解码,这真的很酷,我搜索了一段时间但没有找到任何免费的库来做到这一点......
真的很奇怪!我在 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);
上面的速度真的很快!甚至是实时的!我认为解码 5m 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);
上面的代码变得非常慢
//------------------------------------------------ --------------
如果我添加 Bitmap = Bitmap::FromFile(L"c:\1.jpg", true); //进入构造
离开
Graphics graphics(hdc);
graphics.SetInterpolationMode( InterpolationModeNearestNeighbor );
graphics.DrawImage(bitmap,0,0,2000,2000);
在 OnPaint 方法中,代码还是有点慢~~~
//------------------------------------------------ ------------------
与解码相比,drawImage 的过程真的很慢……
他们为什么以及如何做到这一点?微软给负责解码的人支付的工资是负责编写绘图图像的人的两倍吗?