C# Canvas -> Bitmap

385
02 июня 2017, 10:09

У меня есть изображение в Canvas, мне надо его перевести в Bitmap. Везде написан один и тот же код, где при переводе используется PixelFormats.Pbgra32. Данный параметр мне очень мешает, т.к. из-за него все цветовые компоненты пикселя меняют своё значение и мой Bitmap получается не таким, каким он есть на самом деле. Как мне доставать Bitmap из Canvas, чтобы ни один пиксел при этом не был изменён?

public static System.Drawing.Bitmap GetBitmapFromCanvas(Canvas canvas)
        {
            Transform transform = canvas.LayoutTransform;
            canvas.LayoutTransform = null;
            Size size = new Size(canvas.Width, canvas.Height);
            canvas.Measure(size);
            canvas.Arrange(new Rect(size));
            RenderTargetBitmap renderBitmap =
              new RenderTargetBitmap(
                (int)size.Width,
                (int)size.Height,
                96d,
                96d,
                PixelFormats.Pbgra32);
            renderBitmap.Render(canvas);
            System.Drawing.Bitmap result;
            using (MemoryStream outStream = new MemoryStream())
            {
                PngBitmapEncoder encoder = new PngBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                encoder.Save(outStream);
                result = new System.Drawing.Bitmap(outStream);
            }
            canvas.LayoutTransform = transform;
            return result;
        } 
READ ALSO
Как задать условие в C# для StreamReader

Как задать условие в C# для StreamReader

Делаю парсинг текстового файлаНужно задать условие: "если строка начинается с числа" и тд

266
Алгоритм швидкого сортування [требует правки]

Алгоритм швидкого сортування [требует правки]

Мені потрібно застосувати алгоритм швидкого сортування послідовності, як це написати?

219
Нужно использовать массив в 2 пабликах

Нужно использовать массив в 2 пабликах

Здравствуйте, столкнулся с проблемой, что нужно использовать массив в двух piblic`ах одновременно, не знаю как это сделать, visual studio не находит...

220