【发布时间】:2008-11-07 07:15:33
【问题描述】:
感谢解答,其实我并不疑惑draw 1024*768 pixel比100* 100 pixel要慢...就是这么简单的一个逻辑.. 让我不解的是,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);
上面写的真快!甚至是实时的!我不认为解码 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的过程真的很慢……
他们为什么以及如何做到这一点?微软给负责解码器的人支付的工资是负责编写绘图图像的人的两倍吗?
【问题讨论】: