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的男性?
那么,你真正想知道的是为什么
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倍像素的事实可能与它有关.
| 归档时间: |
|
| 查看次数: |
1671 次 |
| 最近记录: |