У меня есть изображение в 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;
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники