Преобразование GDI + PixelFormat в WPF PixelFormat - PullRequest
10 голосов
/ 24 февраля 2011

Какой лучший способ получить значение System.Windows.Media.PixelFormats , эквивалентное System.Drawing.Imaging.PixelFormat ?

Ответы [ 2 ]

8 голосов
/ 01 августа 2011

Это способ конвертации, поэтому давайте начнем здесь и посмотрим, сможет ли кто-нибудь превзойти эту ужасную штуковину.Они хорошо сопоставляются друг с другом, поэтому написание вариантов переключения должно быть довольно простым.

private static System.Windows.Media.PixelFormat ConvertPixelFormat(System.Drawing.Imaging.PixelFormat sourceFormat)
{
    switch (sourceFormat)
    {
        case System.Drawing.Imaging.PixelFormat.Format24bppRgb:
            return PixelFormats.Bgr24;

        case System.Drawing.Imaging.PixelFormat.Format32bppArgb:
            return PixelFormats.Bgra32;

        case System.Drawing.Imaging.PixelFormat.Format32bppRgb:
            return PixelFormats.Bgr32;

        // .. as many as you need...
    }
    return new System.Windows.Media.PixelFormat();
}
0 голосов
/ 15 апреля 2015

Тема очень старая, но я решил эту проблему, работая в предположении, что оба перечисления имеют одинаковые строковые значения.

private static System.Windows.Media.PixelFormat ConvertPixelFormat (System.Drawing.Imaging.PixelFormat sourceFormat) { System.Windows.Media.PixelFormat pixelFormat = (System.Windows.Media.PixelFormat) Enum.Parse(typeof(System.Windows.Media.PixelFormat), sourceFormat.ToString());<br> return pixelFormat; }

...