示例#1
0
        public virtual void Dispose()
        {
            if (WicEncoder is null)
            {
                return;
            }

            WicEncoder->Release();
            WicEncoder = null;

            ccw.Dispose();
        }
示例#2
0
        public WicImageEncoder(FileFormat format, Stream stm)
        {
            var fmt = formatMap.GetValueOrDefault(format, GUID_ContainerFormatPng);

            var gch = GCHandle.Alloc(stm);
            var sti = new IStreamImpl(gch);

            ccw = new SafeComCallable <IStreamImpl>(sti);

            using var encoder = default(ComPtr <IWICBitmapEncoder>);
            HRESULT.Check(Wic.Factory->CreateEncoder(&fmt, null, encoder.GetAddressOf()));
            HRESULT.Check(encoder.Get()->Initialize((IStream *)ccw.DangerousGetHandle(), WICBitmapEncoderCacheOption.WICBitmapEncoderNoCache));

            WicEncoder = encoder.Detach();
        }
 public int WriteThumbnail(ID2D1Image *pImage, IWICBitmapEncoder *pEncoder, [NativeTypeName("const WICImageParameters *")] WICImageParameters *pImageParameters)
 {
     return(((delegate * unmanaged <IWICImageEncoder *, ID2D1Image *, IWICBitmapEncoder *, WICImageParameters *, int>)(lpVtbl[5]))((IWICImageEncoder *)Unsafe.AsPointer(ref this), pImage, pEncoder, pImageParameters));
 }