|
DPI Aware картинки - ЧАСТЬ 2, Обсудим управление растровыми картинками?
|
|||
---|---|---|---|
#18+
Я уже спрашивал насчёт картинок для DPI-аварных приложений, но в той теме разговор ушёл в другую тему, в сторону обсуждения вектора, и решил её не поднимать, пусть про вектор будет отдельно. В общем, для разработки я принял решение - картинки будут в приложении растровые, для каждого разрешения по одной картинке. Microsoft пока поддерживает 9 скейлов: 100, 125, 150, 175, 200, 225, 250, 300 и 350 процентов, от 96 до 336DPI. Соответственно, имея 100%-ную картинку 24х24, я имею для каждой 9 копий, вплоть до 84х84 пикселя. Вопрос, как этим всем управлять. Сейчас, на время макета, все картинки просто сложил всё в каталог Images, переименовал по схеме Copy-100.png, Copy-125.png ... Copy-350.png. Сделал DpiHelper - вычисляет текущий DPI, и сделал перечислитель в ViewModel: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
В XAML использую такую схему: Код: xml 1.
А что делать, когда картинок будет тысячи? А их будут тысячи: у меня сейчас только на тулбарах почти 2 сотни картинок, умножить на 9 - почти 2К. А ещё контролы-шмантролы и т.п. А ещё надо иметь кастомные версии продукта, в которых другие лого, картинки на некоторых кнопках, картинки с текстами и т.д. Кто как управляется с подобным хозяйством? Если вынести всё в ресурсную dll-ку, сколько занимает времени перерисовка при перетаскивании на экран с другим DPI? Какай fps на retina-дисплеях? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 15:26 |
|
DPI Aware картинки - ЧАСТЬ 2, Обсудим управление растровыми картинками?
|
|||
---|---|---|---|
#18+
может сделать свой ImageSource, но тут есть жопа, ImageSource нелья имплиментировать, по причине того, что там Internal классы повсюду, но есть еще вариант BitmapSource и прочие не Sealed классы наследованные от ImageSource. Можно попробовать через ObjectDataProvider: типа такого: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
p.s. это только идейный код, ни чего не вычисляется, но картинка показывается в зависимости от статического свойства Index, как получить Index картинки с соответствующим DPI думай сам :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 16:53 |
|
DPI Aware картинки - ЧАСТЬ 2, Обсудим управление растровыми картинками?
|
|||
---|---|---|---|
#18+
Roman Mejtes, т.е. мне для каждой картинки надо будет объявлять в ресурсе массив local:DpiImageSource и туда набрасывать картинки? Блин, довольно громоздко. Там же не 1, 2, 3.jpg, а 1-2-3-4-5-6-7-8-9. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 12:16 |
|
DPI Aware картинки - ЧАСТЬ 2, Обсудим управление растровыми картинками?
|
|||
---|---|---|---|
#18+
13thRoman Mejtes, т.е. мне для каждой картинки надо будет объявлять в ресурсе массив local:DpiImageSource и туда набрасывать картинки? Блин, довольно громоздко. Там же не 1, 2, 3.jpg, а 1-2-3-4-5-6-7-8-9. любые ресурсы выглядят громоздко, но если их правильно распределить то норм, тем более, что в XAML форме всё не плохо читается, но если хотите, делайте чисто в коде, подобное, не кто не запрещает ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 12:20 |
|
DPI Aware картинки - ЧАСТЬ 2, Обсудим управление растровыми картинками?
|
|||
---|---|---|---|
#18+
(Вопрос от новичка) А в чём принципиальное отличие от моего метода? У меня есть код, который на основании окружения подставляет имя файла. У Вас сразу возвращает BitmapImage. Что одно, что другое по сути не решает проблемы. Может, лучше написать свой класс DpiAwaredImage, который буду инициализировать списком картинок? Но не так, как в риббонах, там тоже довольно громоздко: Код: xml 1. 2. 3. 4. 5. 6.
Я бы хотел иметь чтнб типа: Код: xml 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 12:58 |
|
DPI Aware картинки - ЧАСТЬ 2, Обсудим управление растровыми картинками?
|
|||
---|---|---|---|
#18+
Roman Mejtesлюбые ресурсы выглядят громоздко, но если их правильно распределить то норм, тем более Тут не спорю. Тем более, это подходит для моих целей - кастомизировать приложение. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 13:03 |
|
|
start [/forum/topic.php?fid=21&fpage=11&tid=1440664]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
82ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 195ms |
0 / 0 |