Моно игнорирует Graphics.InterpolationMode?

У меня есть программа, которая рисует векторную графику, используя System.Drawing и класс Graphics. Сглаживание работает, вроде нормально, но мне нужна передискретизация, поэтому я создаю начальное изображение в n раз больше, а затем уменьшаю конечное изображение в n. В Windows и .NET результирующее изображение выглядит великолепно! Однако в Mono 2.4.2.3 (стандартная установка Ubuntu 9.10) интрополяция ужасна. Вот как я масштабирую свои изображения:

Bitmap bmp = new Bitmap(Bmp.Width / OverSampling, Bmp.Height / OverSampling);
Graphics g = Graphics.FromImage(bmp);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(Bmp, 0, 0, bmp.Width, bmp.Height);
g.Dispose();

Из того, что я могу сказать, никакой интерполяции не происходит вообще. Любые идеи?


person Timothy Baldridge    schedule 21.04.2010    source источник


Ответы (2)


Ну, я нашел это: http://www.mail-archive.com/[email protected]/msg18099.html

Я предполагаю, что основной код процедур рисования Mono виноват. УРА! Теперь я могу написать свой собственный даунскейлер.

person Timothy Baldridge    schedule 21.04.2010
comment
Привет Тимоти. Просто интересно, придумали ли вы когда-нибудь хорошее решение для этого. Вот столкнулся с тем же :( - person Brad Robinson; 01.10.2010
comment
К сожалению, нет... это проблема, которая уходит очень глубоко в код Linux. По сути, System.Drawing Mono основан на Cairo, который, в свою очередь, основан на Pixman. Проблема в Пиксмане. Я взглянул на код Pixman, и это потребует некоторых усилий. Код чрезвычайно гибкий и поэтому довольно сложный. Baiscaly то, что вы ищете, это билинейная фильтрация в pixman. И, насколько я знаю, его не существует. И если он будет добавлен, вам придется вручную перекомпилировать pixman, чтобы получить функции. Либо так, либо ждите нового выпуска дистрибутива. - person Timothy Baldridge; 01.10.2010
comment
Честно говоря, я остановился на PySide и Python. И это было здорово до сих пор. - person Timothy Baldridge; 01.10.2010
comment
Очень жаль. Сайт, над которым я работаю, разработан под .net. Потратил около часа на запуск под моно - все работает отлично, кроме одной маленькой причуды. Ну что ж. Спасибо, в любом случае. - person Brad Robinson; 01.10.2010