Персональный сайт Александра Тауениса » Панель Xwt.Canvas в Xwt

Панель Xwt.Canvas в Xwt

В фреймворке абстрагирования интерфейса пользователя «XWT» [вроде как] нет абсолютного позиционирования элементов. Это связано с его происхождением от GTK#, где форма может содержать только один элемент но неограниченное количество подэлементов, если этот единственный элемент — носитель элементов-холст. Также оно и в XWT. Итак, сегодня я расскажу про то, как создать холст и разместить на нём элементы.

В предыдущей статье я рассказал про основы интеграции XWT в имеющиеся приложения WinForms. О том, как создать приложение с использованием XWT с нуля, можно почитать на Хабре. Итак, для начала надо инициализировать XWT и создать несколько элементов управления. В данном примере я буду наращивать пример из предыдущей статьи.
//подготовка XWT
Xwt.Application.InitializeAsGuest(Xwt.ToolkitType.Wpf);
//создание контролов
Xwt.Button thecontrol = new Xwt.Button("This is a raw Xwt button!");
Xwt.CheckBox thecontrol2 = new Xwt.CheckBox("This is a raw Xwt checkbox");

Теперь необходимо создать «холст»: Xwt.Canvas canvas = new Xwt.Canvas();. Именно на нём и будет производится размещение компонентов.

Будете смеяться, но осталось только добавить на канвас сами элементы:
canvas.AddChild(thecontrol, 10, 10);
canvas.AddChild(thecontrol2, 10, 40);

Первым параметом является ссылка на элемент управления, отступ по X (горизонтали) и Y (вертикали). Отсчёт ведётся, как и во многих других фреймворках, от левого верхнего угла Canvas’a.

В случае использования XWT напрямую, достаточно показать форму и выполнить Xwt.Application.Run(), запускающий обработку событий. Если XWT запускается в каком-либо контейнере, то надо «вернуть в реальность» холст. В ElementHost это осуществляется абсолютно аналогично другим абстрактным элементам управления XWT — elementHost1.Child = (System.Windows.UIElement)t.GetNativeWidget(canvas);



Поделиться в соцсеть


Оставить комментарий

:D :) ;) :( :o :shock: :? Больше смайлов »

Защита от спама * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.