我已经在VS 2010中为我的.Net 4应用程序创建了一个设置和部署项目.在我的先决条件中,我已经检查过.Net4先决条件但我已经了解到.Net4已经省略了WIC(Windows Imaging Component)以使其变得轻松.
当我在Vista/Win7中运行我的设置时,Net4安装不会给WIC带来错误,但是当我在XP中安装它时,它会给WIC带来错误.然后我必须先手动安装WIC然后运行我的设置.
我需要一个WIC的引导程序,它在XP中安装.Net4之前运行.请建议如何完成或链接.提前致谢.
.net wic bootstrapper setup-deployment visual-studio-setup-proje
如何查看Windows计算机上安装的Windows映像组件版本?我怀疑Azure中使用的Windows 2008 Server与我在Windows 7开发机器上的版本不同.我只想验证我需要最新的TIFF编解码器.
使用工厂方法可以很容易地从 HBITMAP 生成 IWICBitmap CreateBitmapFromHBITMAP。但是如何从 IWICBitmapSource 获取简单的 GDI 位图呢?
我试图了解如何使用Windows API,Direct2D和Visual C++从文件加载和呈现图像.我或多或少地试图关注有关此主题的MSDN文章.我是C++(在C中经验丰富)和Windows API的新手.
我写了3个函数.
HRESULT imagefactorysetup(IWICImagingFactory * pImageFactory)
{
HRESULT hr = CoCreateInstance(CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_IWICImagingFactory, (LPVOID *) &pImageFactory);
return hr;
}
HRESULT imageload(LPCWSTR filename, IWICImagingFactory * pImageFactory, IWICBitmapFrameDecode * pFrame)
{
IWICBitmapDecoder * pDecoder = NULL;
HRESULT hr = pImageFactory->CreateDecoderFromFilename(filename, NULL, GENERIC_READ, WICDecodeMetadataCacheOnLoad, &pDecoder);
if (SUCCEEDED(hr))
hr = pDecoder->GetFrame(0, &pFrame);
//Format convert the frame to 32bppPBGRA
IWICFormatConverter * pFormatConverter = NULL;
if (SUCCEEDED(hr))
{
SafeRelease(&pFormatConverter);
hr = pImageFactory->CreateFormatConverter(&pFormatConverter);
}
if (SUCCEEDED(hr))
hr = pFormatConverter->Initialize(pFrame, GUID_WICPixelFormat32bppPBGRA, WICBitmapDitherTypeNone, …Run Code Online (Sandbox Code Playgroud) 最近在用WIC解析GIF。代码写好了,在win10和win7上都可以完美运行,但是在WinXP上就失败了。排除了半天,终于在这行代码上找到原因:
// pBitmapFrameDecode is an IWICBitmapFrameDecode
hr = pBitmapFrameDecode->GetMetadataQueryReader(&pFrameMetadataQueryReader);
if (hr == WINCODEC_ERR_UNSUPPORTEDOPERATION) MessageBoxA(NULL, "WINCODEC_ERR_UNSUPPORTEDOPERATION", "Error!", MB_OK);
Run Code Online (Sandbox Code Playgroud)
在这行代码中,GetMetadataQueryReader失败了,它会导致GetMetadataByName以下代码中的失败。觉得很奇怪,就查了MSDN。
IWICBitmapFrameDecode::GetMetadataQueryReader
但是我发现我的 XP 电脑符合 MSDN 编写的最低配置要求(SP3)。更奇怪的是,该函数返回WINCODEC_ERR_UNSUPPORTEDOPERATION. 这太奇怪了。一开始,我以为是我自己的设备问题,所以我借了几台XP电脑,在上面运行我的代码。他们都回来了WINCODEC_ERR_UNSUPPORTEDOPERATION。MSDN有错吗?