Перевод иконок ресурсной dll с bmp на png

Автор Тема: Перевод иконок ресурсной dll с bmp на png  (Прочитано 25921 раз)

0 Пользователей и 8 Гостей просматривают эту тему.

Оффлайн VetalBYАвтор темы

  • ADN Club
  • Сообщений: 44
  • Карма: 3
Проблема следующая: все иконки меню собраны в dll в формате bmp. В AutoCAD 2017, насколько я понял, прекращена поддержка bmp в иконках, нужно переходить на png. Вернее акад показывает и bmp, но без прозрачности, т. е. выглядит это мягко говоря "не очень".
Как проще выполнить перевод проекта Visual Studio для создания ресурсной dll от bmp к png? Что-то не нахожу вообще информации по созданию dll для AutoCAD, содержащую иконки не bmp, а png.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн VetalBYАвтор темы

  • ADN Club
  • Сообщений: 44
  • Карма: 3
А я с png мучаюсь... Взял отсюда http://adn-cis.org/autodesk-developer-day-2016.html
Видимо png можно использовать, но только не в dll.
Спасибо, попробую ico

Оффлайн VetalBYАвтор темы

  • ADN Club
  • Сообщений: 44
  • Карма: 3
Работает. И bmp, и ico можно держать в одной dll, которая подойдет под все версии акада - это очень хорошо)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
И bmp, и ico можно держать в одной dll, которая подойдет под все версии акада - это очень хорошо)
Держать то можно, но имена ресурсов должны отличаться и соответственно должны быть разные CUI/CUIX-файлы.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн VetalBYАвтор темы

  • ADN Club
  • Сообщений: 44
  • Карма: 3
Держать то можно, но имена ресурсов должны отличаться и соответственно должны быть разные CUI/CUIX-файлы.
Они разного типа, одни Bitmap, другие RCDATA, поэтому имена могут быть одинаковые.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Они разного типа, одни Bitmap, другие RCDATA, поэтому имена могут быть одинаковые.
А вот тут я не уверен. Каким образом AutoCAD определит брать ли ему IDI_TRIANGLE32 из раздела BITMAP или IDI_TRIANGLE32 из раздела RCDATA, если в cuix-файле указано IDI_TRIANGLE32?
Т.е. содержимое rc-файла такое допустимо:
Код - INI [Выбрать]
  1. BITMAP16                BITMAP                  "RES\\bitmap16.bmp"
  2. BITMAP32                BITMAP                  "RES\\bitmap32.bmp"
  3. BITMAP16                RCDATA                  "RES\\bitmap16.ico"
  4. BITMAP32                RCDATA                  "RES\\bitmap32.ico"
Но какую из иконок возьмёт AutoCAD если его просят BITMAP32?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн VetalBYАвтор темы

  • ADN Club
  • Сообщений: 44
  • Карма: 3
Но какую из иконок возьмёт AutoCAD если его просят BITMAP32?
Ну для точного ответа нужно провести тесты на всех акадах)
Из того, что смотрел я:
AutoCAD 2006 - 2017 берут из RCDATA, т.е получается bmp вообще не нужен. На более низких версиях не смотрел, мне не нужно, подозреваю, что будут искать bmp.
А вот BricsCAD точно берет bmp.
Поэтому я и говорю, что вариант с двумя одинаковыми именами в разных типах должен сработать везде, т. е. более надежный и хуже не будет. Каждая версия будет искать свой тип, о котором она знает.
Еще бы для разных тем оформления (темная и светлая) всё в одну dll запихнуть - вообще сказка была бы)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Еще бы для разных тем оформления (темная и светлая) всё в одну dll запихнуть - вообще сказка была бы)
Да ладно. Добавишь ещё одну dll:
- в версиях 2015-2016 для темной схемы подгружается DLL, совпадающая с названием CUIX, для светлой - название с суффиксом "_light". Пример: "MyTools.cuix", иконки для темной схемы: "MyTools.dll", для светлой: "MyTools_light.dll".
Думаю что для AutoCAD 2017 аналогично.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн VetalBYАвтор темы

  • ADN Club
  • Сообщений: 44
  • Карма: 3
Да ладно. Добавишь ещё одну dll:
Ну да. Только вот опять не по-русски всё: без суффикса в 2015 акаде-это для темной схемы (на пиктограммах цвет хорошо видимый - это белый, для светлой - черный), а в том же 2013-м для темной и светлой пиктограммки не отличаются (вычерчены черным). ИМХО нужно было для светлой схемы без суффикса. Ну это так, заморочки, это я к тому, что скорее всего одним меню не обойтись...
Александр, спасибо за подсказку на счет ico. Честно говоря, до сих пор встречал только информацию о том, что dll делают из bmp. И был сильно удивлен, что уже AutoCAD 2006 знал об RCDATA.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
И был сильно удивлен, что уже AutoCAD 2006 знал об RCDATA.
Насколько я помню и более ранние знали, но с какой версии не помню. Кажется с 2004-ой, но проверить не могу. Просто в своё время просматривал ресурсные dll-ки самого AutoCAD и находил, что стандартные иконки находятся именно в разделе RCDATA, а не BITMAP.
В основном они содержались в файле acadbtn.xmx, а в последних версиях в acadbtn.xmx и acadbtn_light.xmx
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
возможно будет интересно глянуть: http://bushman-andrey.blogspot.ru/2013/08/dll-partial-cui.html

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
возможно будет интересно глянуть: http://bushman-andrey.blogspot.ru/2013/08/dll-partial-cui.html
Теперь можешь статью немного подправить на предмет возможности использования ico-файлов (в том числе и прозрачных) и то, что цвет 192,192,192 в AutoCAD 2017 и последующих больше не воспринимается как прозрачный.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
и то, что цвет 192,192,192 в AutoCAD 2017 и последующих больше не воспринимается как прозрачный.
У меня в AutoCAD 2009 этот цвет на ribbon panel интерпретируется как прозрачный, а на toolbar - нет... В чём может быть затык?

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Оказалось, что AutoCAD "сфотографировал" предыдущую версию картинки и после обновления dll обновление было подхвачено только риббонами, но не туллбаром. Выгрузка и повторная загрузка частичного меню не помогает - всё равно туллбар кажет старый вариант.