none
wic 如何导入32位的bmp而保持其透明通道不丢失呢? RRS feed

答案

  • bmp格式虽然本身是有支持透明通道,但是目前很少有工具能来生成其Alpha通道数据,所以先确认你的bmp是带Alpha的,如果没有,最好还是用png替代。

    ComPtr<IWICBitmapDecoder> decoder;
    ComPtr<IWICBitmapFrameDecode> bitmapSource;
    ComPtr<IWICFormatConverter> converter;
    
    ComPtr<IWICImagingFactory> wicFactory;
    GetWICFactory(&wicFactory);
    
    wicFactory->CreateDecoderFromFilename(
       uri, // name of the file
       nullptr, GENERIC_READ, WICDecodeMetadataCacheOnLoad, &decoder);
    
    decoder->GetFrame(0, &bitmapSource);
    wicFactory->CreateFormatConverter(&converter);
    converter->Initialize(
       bitmapSource, GUID_WICPixelFormat32bppRGBA, /* choose one format list in http://msdn.microsoft.com/en-us/library/windows/desktop/ee719797(v=vs.85).aspx */
       WICBitmapDitherTypeNone, nullptr, 0.f,
       WICBitmapPaletteTypeMedianCut);
    // Create a Direct2D bitmap from the WIC bitmap.
    hr = renderTarget->CreateBitmapFromWicBitmap(converter, nullptr, bitmap);


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年5月23日 3:56
    版主

全部回复

  • bmp格式虽然本身是有支持透明通道,但是目前很少有工具能来生成其Alpha通道数据,所以先确认你的bmp是带Alpha的,如果没有,最好还是用png替代。

    ComPtr<IWICBitmapDecoder> decoder;
    ComPtr<IWICBitmapFrameDecode> bitmapSource;
    ComPtr<IWICFormatConverter> converter;
    
    ComPtr<IWICImagingFactory> wicFactory;
    GetWICFactory(&wicFactory);
    
    wicFactory->CreateDecoderFromFilename(
       uri, // name of the file
       nullptr, GENERIC_READ, WICDecodeMetadataCacheOnLoad, &decoder);
    
    decoder->GetFrame(0, &bitmapSource);
    wicFactory->CreateFormatConverter(&converter);
    converter->Initialize(
       bitmapSource, GUID_WICPixelFormat32bppRGBA, /* choose one format list in http://msdn.microsoft.com/en-us/library/windows/desktop/ee719797(v=vs.85).aspx */
       WICBitmapDitherTypeNone, nullptr, 0.f,
       WICBitmapPaletteTypeMedianCut);
    // Create a Direct2D bitmap from the WIC bitmap.
    hr = renderTarget->CreateBitmapFromWicBitmap(converter, nullptr, bitmap);


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年5月23日 3:56
    版主
  • thanks 解决了
    2012年5月23日 6:30