Direct2D 비트 맵은 하드웨어 장치에 의존하는 리소스이므로 일반적으로 시스템의 CPU 쪽에서 쉽게 액세스 할 수 없습니다. 따라서 ID2D1Bitmap
의 픽셀을 얻는 것은 어렵습니다. 그런 식으로 사용되는 것은 아닙니다. Direct2D 비트 맵에서 raw 바이트를 가져 오는 메커니즘은 일반적으로 바이트 스트림에 액세스하기 위해 WIC 비트 맵을 생성하여이를 수행합니다. 이 방법으로 파일이나 바이트 배열에 쓸 수 있으며 C#에서 액세스 할 수있는 interop을 사용할 수 있습니다. 파일에 쓰고 WPF로 읽으려는 경우이 메커니즘이 작동합니다. 처리 중에 얼마 동안 IWICBitmapSource
개체에 비트 맵 데이터가 있고이를 캐시 할 수 있으면 작업이 쉬울 것입니다. System.Drawing.Bitmap
을 System.Windows.Media.ImageSource
으로 변환하면 여기에 답합니다. Converting Bitmap to ImageSource (@MSL에게 감사의 말을 전합니다).
이 시점에서 사용 방법은 약간 명확하지 않습니다. 의도 한 사용에 대한 정보 또는 짧은 샘플이 실제로 여기에서 도움이 될 것입니다.
편집 1 : Save ID2D1Bitmap to file하고 파일에 ID2D1Bitmap
를 저장 코드의 버전에 대한 의견 : 이 SO QN를 살펴 보자. 기본적으로 IWICBitmap
으로 변환하여 파일에 기록합니다. 이 단계에서는 IWICBitmap
이 IWICBitmapSource
에서 상속되기 때문에 CopyPixels()
메서드를 사용하여 비트 맵 데이터를 바이트 배열로 덤프 할 수도 있습니다. 이제
당신이 System.Drawing.Bitmap
을 받고, 파일에 저장하는 방식으로 진행하는 경우는 다음과 같이 간단하다 :
bitmap = new Bitmap("<YOUR_BITMAP_FILENAME>")
그리고 당신은 WPF에서 사용하기 위해 BitmapImage로 변환 할 수 있습니다 :
using(MemoryStream memstream = new MemoryStream())
{
bitmap.Save(memstream, ImageFormat.Bmp);
memstream.Position = 0;
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = memstream;
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.EndInit();
}
아마도 도움이 될 수 있습니다. [비트 맵을 ImageSource로 변환] (http://stackoverflow.com/questions/26260654/wpf-converting-bitmap-to-imagesource) – MSL
이것을 보았습니까? https://github.com/Microsoft/WPFDXInterop 우리가 사용할 수있는 샘플 코드가 있습니까? –
도와 주려고하는 사람들에게 왜 대답하지 않습니까? –