2009-02-23 5 views
9

Я создал довольно причудливое приложение winforms для своей компании. У нас был графический дизайнер, создающий графический интерфейс, который представлял собой боль для реализации, все графические кнопки, многослойные фоны и логотипы, анимации и т. Д.Графически шаблон приложения .NET winforms

Но теперь моя компания хочет перепродать ее под разные бренды. Но так как я в основном закодировал его хорошо, я сказал, что мои более высокие взлеты могут иметь полностью ребрендинговую версию, выполненную в течение недели. В основном все, что я хотел бы сделать, это изменить кучу настроек в файле настроек xml, поменять графики на новый набор и построить.

Проблема заключается в том, если они хотят 5 или 6 различных марок, я бы 5 различные сборки для поддержки (я действительно должен поддерживать 1, с шаблонами дифф)

Проблема заключается в его не так просто (насколько Я знаю), чтобы поменять изображения в приложении winforms. У меня есть все графические ресурсы в одной папке, но как только каждый файл вводится в соответствующий список изображений или контейнер в visual studio, единственный способ получить его для обновления - удалить его и повторно добавить, изменив исходную папку не заставляет встроенное изображение обновляться. Это было бы невероятно утомительно для каждой сборки, там должен быть более простой способ.

Add On:
Таким образом, после некоторого дальнейшего расследования, я опираясь torwards какой-то редактор Resx файла. Однако те, что я видел до сих пор, больше ориентированы на перевод строк на разные языки и либо очень слабы, либо вообще не могут редактировать двоичные ресурсы, такие как bitmaps/png. Хотя если вы откроете файл resx в средстве просмотра xml (я использую блокнот 2 с установкой .resx, чтобы использовать подсветку синтаксиса xml). MS достаточно любезен, чтобы точно рассказать, как скомпилирован каждый тип (в основном варианты базы 64)

+2

слишком плохо, что вы делаете winforms, это будет торт в WPF. –

+0

Приложение было запущено чуть более года назад, используя много кода, импортированного из версии, которую мы сделали почти 4 года назад. К сожалению, я не вижу, чтобы мы переключились на WPF на этот раз. –

ответ

12

Я думаю, что ваша цель должна иметь «фирменные» файлы ресурсов; вы по существу локализуете свое приложение, за исключением того, что у вас есть несколько разных версий английского языка.

Вы можете использовать ResGen.exe и ResourceManager для загрузки файла внешних ресурсов, чтобы вы могли использовать 5 разных «ресурсов», но сохраняйте свою базу кода одинаковой.

Это сообщение может также помочь ... http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/b388c700-0e07-452b-a19e-ce02775f78a6/

Edit: Кстати, я второй комментарий, что если вы собираетесь через много усилий на это, рассмотрим WPF ... Большинство из тех «графических» элементов можно было бы сделать изначально, особенно если это градиенты и прочее, не говоря уже о простой шаблоне.

+0

WPF в сторону, я не уверен, что это то, что я ищу, разве я все равно должен добавить каждое изображение в отдельный файл ресурсов? Я ищу, чтобы графический парень менял все изображения в папке, а затем менял эту папку для моего текущего, прежде чем строить. –

-2

Я думаю, вы должны думать о создании пользовательских элементов управления для динамически заменяемых областей формы. Во время выполнения вы можете поменять одну сборку на другую.

+0

Это ужасная идея. ВСЕ - это графическое изображение. И я хочу сохранить код в одном месте. Создание новых сборок для каждой сборки сделает меня хуже, чем я сейчас. –

+0

Я думал, что вы имеете в виду заголовок. Я предлагаю вам создать отдельный пользовательский элемент управления, с изображениями в виде встроенных ресурсов, а затем динамически загрузить соответствующий элемент управления во время выполнения. У каждой марки будет своя сборка заголовков. Если у вас есть изображения, о которых идет речь, это не путь. –

0

Что бы я сделал, просто загрузите всю графику диска при запуске из папки и создайте любые необходимые для этого макеты, а не делайте это в дизайнере. Если вы опасаетесь, что кто-то украдет графику, тогда я бы создал простой формат файла (возможно, зашифрованный) для своей графики и небольшое простое приложение для вас или дизайнера для преобразования в этот формат из обычных файлов. Тогда речь идет только об замене этой папки между разными брендами.

0

Если большинство ваших форм схожи (например, тот же логотип, те же кнопки внизу и т. Д.), Вы можете использовать visual inheritance на WinForms, чтобы определить набор «базовых форм», из которых наследуются ваши фактические формы.

Если вы разработали набор «базовых форм» для каждого из ваших брендов, каждый набор в отдельной сборке вы можете подключить необходимую работу для создания новой марки, чтобы сгенерировать новый набор базовых форм.

Надеется, что это помогает

0

Это слишком поздно, но WPF был бы лучшим выбором, чем WinForms, так как это проще кожу.

Однако посмотрите, что делает DevExpress для WinForms, так как их элементы управления имеют систему скинов. Не слишком сложно поменять элемент управления winform для WinExpress для стандартного элемента управления winform.