문제

BitMapSource 객체를 이미지 컨트롤의 내용으로 사용할 수 있지만 BitMap 객체 만있는 경우 다음 방법을 사용하여 BitMap을 BitMapSouce로 변환하면 직접 사용할 수 있습니다.

        Bitmap bitmap = imageObjToBeConvert;
        IntPtr HBitmap = bitmap.GetHbitmap();
        result = Imaging.CreateBitmapSourceFromHBitmap
            (HBitmap,
            IntPtr.Zero,
            Int32Rect.Empty,
            BitmapSizeOptions.FromEmptyOptions());
        DeleteObject(HBitmap);
        bitmap.Dispose();

시간이 좀 걸립니다. 비트 맵을 직접 사용하는 방법이 있습니까?

그리고 BitMapSouce가 직접 해제 될 수없는 것처럼 보였고 BitMapSouce가 다시 사용되지 않은 후에 즉시 메모리를 해제하는 샘플 방법이 있습니까?

도움이 되었습니까?

해결책

아니요, 사용할 수 없습니다 Bitmap 곧장. 이 때문입니다 System.Drawing.Bitmap 클래스와 같은 GDI+ 비트 맵입니다 BitmapImage 안에 System.Windows.Media.Imaging d3d/directx입니다.

메모리 사용과 관련하여 직접 출시 할 수는 없지만 일반적으로 배경에 들어가는 일종의 캐싱이 있습니다. a를로드 할 수있는 방법이 있습니다 BitmapImage 캐시를 무시할 수 있습니다.

다른 팁

  • System.windows.media.imaging .. ::. BitMapFrame
  • System.windows.media.imaging .. ::. Bitmapimage
  • System.windows.media.imaging .. ::. Cachedbitmap
  • System.windows.media.imaging .. ::. ColorConvertedBitMap
  • System.windows.media.imaging .. ::. CroppedBitMap
  • System.windows.media.imaging .. ::. FormatConvertedBitMap
  • System.windows.media.imaging .. ::. RendertargetBitmap
  • System.windows.media.imaging .. ::. TransformedBitMap
  • System.windows.media.imaging .. ::. WriteblebitMap

이 클래스는 모두 BitMapSource에서 상속되므로 해당 맥락에서 사용될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top