Лучший язык для быстрого создания пользовательских интерфейсов без перетаскивания?

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

Я знаю Perl, Java, C/С++, С# и HTML. Я рассматривал возможность создания приложений HTA. Мои единственные требования заключаются в том, что язык должен работать под MS Windows и не должен использовать SWING или GTK в качестве базового инструментария.

Ответ 1

Говоря как слепой программист:

  • С# + WinForms. Вы можете либо создать код вручную, либо использовать менеджеры макетов, либо рассчитать размеры в голове, или если вы используете программу чтения JAWS, тогда есть сценарии, которые помогут вам в дизайнере WinForms.
  • С# + WPF: здесь вы определяете свой интерфейс в XML, но сложнее обдумать. Конечно, посмотрите на это, так как это очень приятное решение. Другая проблема с WPF на данный момент заключается в том, что не все устройства чтения с экрана поддерживают эту новую технологию.
  • Jamal Mazrui на www.EmpowermentZone.com создал что-то под названием "Макет по коду", но у меня нет опыта с этим.
  • HTML + Javascript будет приятным, но я сомневаюсь, что это будет разрешено в вашем курсе.
  • WXWidgets: у меня нет большого опыта работы с этим кросс-платформенным многоязычным инструментарием пользовательского интерфейса, но я считаю, что у него есть менеджеры макетов и поэтому используется несколькими слепыми программистами, которых я знаю.
  • Наконец, я использовал для создания сценариев ресурсов Win32 вручную, вычисляя размеры в моей голове (без менеджеров макетов). Это, безусловно, возможно, если вы хотите пройти этот маршрут.

В целом, WPF приятно, но убедитесь, что ваш экранный ридер работает с таким приложением. Следующей лучшей альтернативой, вероятно, является WinForms. Если вам нравится "Макет по коду", используйте его, но если это навык, который вы хотите использовать, помните об этом.

Ответ 2

Я бы сказал, что xaml будет хорошим выбором:

  • Пиксельная манипуляция не нужна
  • Функциональность элемента в коде
  • Может добавлять пиксели для управления позже
  • Существует много документации по как использовать его

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

Ответ 3

взгляните на XAML. Я думаю, что это может быть хорошим началом для современных разработчиков Windows и Web UI.

Ответ 4

Tcl/Tk сделает то, что вы хотите. Менеджеры макетов pack и grid основаны на логическом относительном размещении виджетов.

Хотя "родной" язык Tk является Tcl, многие другие языки имеют привязку Tk.

label .l -text "this is a label"
button .b -text 'quit' -command "exit"
pack .l .b

Ответ 5

Проверьте этот проект на codeplex. Это может помочь вам (в качестве альтернативы обработке и amava) http://bling.codeplex.com/

ling - это библиотека на С#, позволяющая легко программировать изображения, анимации, взаимодействия и визуализации в Microsoft WPF/.NET. Bling ориентирован на техников-конструкторов, т.е. Дизайнеров, которые иногда программируют, чтобы помочь в быстром прототипировании богатых дизайнерских идей. Студенты, художники, исследователи и любители также найдут Bling полезным инструментом для быстрого выражения идей или визуализации. API и конструкции Bling API оптимизированы для быстрого программирования кода выброса, а не тщательного программирования производственного кода.

Bling как следующие функции, которые помогают быстрому прототипированию богатых пользовательских интерфейсов:

* Declarative constraints that maintain dynamic relationships in the UI without the need for complex event handling. For example, button.Width = 100 - slider.Value causes button to shrink as the slider thumb is moved to the right, or grow as it is moved to the left. Constraints have many benefits: they allow rich custom layouts to be expressed with very little code, they are easy animate, and they support UIs with lots of dynamic behavior.
* Simplified animation with one line of code. For example, button.Left.Animate.Duration(500).To = label.Right will cause button to move to the right of label in 500 milliseconds.
* Pixel shader effects without the need to write HLSL code or boilerplate code! For example, canvas.CustomEffect = (input, uv) => new ColorBl(new Point3DBl(1,1,1) - input[uv].ScRGB, input[uv].ScA); defines and installs a pixel shader on a canvas that inverts the canvas colors. Pixel shading in Bling takes advantage of your graphics card to create rich, pixel-level effects.
* Support for multi-pass bitmap effects such as diffuse lighting.
* An experimental UI physics engine for integrating physics into user interfaces! The physics supported by Bling is flexible, controllable, and easy to program.
* Support for 2.5D lighting.
* A rich library of geometry routines; e.g., finding where two lines intersect, the base of a triangle, the area of triangle, or a point on Bezier curve. These routines are compatible with all of Bling features; e.g., they can be used in express constraints, pixel shaders, or physical constraints. Bling also provides a rich API for manipulating angles in both degrees and radians.
* And many smaller things; e.g., a frame-based background animation manager and slide presentation system.
* As a lightweight wrapper around WPF, Bling code is completely compatible with conventional WPF code written in C#, XAML, or other .NET languages.

Bling - проект с открытым исходным кодом, созданный Шон Мак-Дирмид и его друзьями, чтобы помочь в разработке быстрого прототипирования. Мы использовали Bling для повышения производительности и хотели бы поделиться им с другими прототипами дизайна WPF.

Ответ 6

Я бы попробовал использовать С#. Он имеет достаточно дружественные интерфейсы к общим элементам управления Windows и тому подобное, даже без использования Drag and Drop. Просто не используйте конструктор и код как обычно.

Ответ 7

Я не программирую на Java, но я знаю, что Java обеспечивает программное создание пользовательского интерфейса и предоставляет некоторые замечательные компоненты управления компоновкой (родной для Java без требования SWING). Сначала я столкнулся с Менеджерами Макетов еще в добрые дни X11 с X Toolkits (кто-нибудь помнит Motif, OpenLook, HP Open View?), И Java, похоже, применяет подобную технологию.

Вы можете создавать Windows, Dialogs и меню из простых менеджеров компоновки.

Ответ 8

Будучи зрелищным и не слишком внимательно работая над тем, что когда-либо проверялось на доступность или к серьезному доступу со стороны слепых пользователей, я не думаю, что мой ответ будет ужасно тщательным. Мой первый инстинкт, однако, состоит в том, чтобы сказать, что какая-то динамическая архитектура веб-сервера, которая генерирует HTML, такой как С#, PHP или ColdFusion, будет соответствовать вашему описанию обработки большей части макета для вас, не требуя указания позиций управления в пикселях. Конечно, есть возможность указать позиции управления в пикселях через CSS, но это не требуется. И я знаю, что HTML также имеет четко определенные стандарты доступности, в то время как я не уверен, что статус на стандартах доступности с другими видами программного обеспечения.

Ответ 9

Вы можете использовать javascript и html. Там есть порт обработки javascript, поэтому вы знаете, что он достаточно силен для вещей, которые будет охватывать ваш класс. Вы можете написать html, не зная ни одной вещи о том, как он выглядит. На самом деле это предпочтительный способ создания html.

Основной недостаток javascript - это не сам javascript, а браузер. Это интерфейс для управления элементами html. Тем не менее, библиотека, такая как jquery, mootools или dojo, может позаботиться о большинстве этих проблем.

Что касается accessiblity, посмотрите WAI ARIA также опера в WAI ARIA.a

WAI ARIA - это способ создания богатых javascript-приложений во время игры с читателями экрана. Это очень здорово. Я не видел больше работы и страсти, чтобы сделать веб-стек доступным в любом другом стеке программ.