32-битные изображения в ImageList отображаются неправильно - PullRequest
0 голосов
/ 17 августа 2011

При отображении либо на Button, либо на ListView 32-разрядные изображения в 32-разрядном ImageList отображаются неправильно. На краю изображения есть несколько черных полупрозрачных пикселей (которые имеют альфа-канал, такой как PNG).

Кроме того, изображения повреждаются, а качество ухудшается с помощью линий над ними (например, при изменении размера изображения без его повторной выборки).

Вставленные изображения имеют 32-битное качество и имеют те же размеры, что и ImageList изображения.

Я пытался поместить те же изображения на Button с помощью Resources files, и это работает, но для ListView я должен использовать ImageList - что не очень хорошо работает.

Есть ли утечки памяти или известные проблемы, связанные с 32-разрядным ImageList?

Ответы [ 2 ]

0 голосов
/ 24 февраля 2012

Я с комментарием на липучке .. похоже проблема с 32-битной System.Drawing dll.

У меня была такая же проблема (ужасное качество миниатюр на 32-битных системах), и этоОказалось, что это был не элемент управления Listview, а наше поколение thumbNail.Мы добавили код, приведенный в этом SO ответе : изменение размера изображения в asp-net-без потери качества изображения , и это сработало великолепно!

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

Затем мы попытались вручную генерировать большие пальцы (все еще с System.Drawing), и он все еще был сломан.Наконец решил поиграть с вариантами изменения размера (решение выше), и это решило его.

0 голосов
/ 03 сентября 2011

Эта проблема возникает только при импорте (32-битный 16x16) ICO-файла. Если вы импортируете 32-битный файл PNG 16x16, проблем нет.

Теперь вы знаете!

...