Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Windows presentation foundation with - MacDonald M.

MacDonald M. Windows presentation foundation with — Вильямс , 2008. — 928 c.
ISBN 978-5-8459-1429-3
Скачать (прямая ссылка): wpfwindowspresente2008.pdf
Предыдущая << 1 .. 182 183 184 185 186 187 < 188 > 189 190 191 192 193 194 .. 473 >> Следующая

Теперь рассмотрим, что случится, если вы поместите Canvas внутри пропорционально изменяющей размер ячейки Grid и не укажете размер Canvas. Если не использовать Viewbox, такой подход отлично работает — Canvas сжимается, чтобы уместиться в ячейке, и его содержимое остается видимым. Но если вы поместите все это содержимое в Viewbox, такая стратегия не работает. Viewbox не может определить начальный размер, а потому не может соответственно масштабировать Grid.
Эту проблему можно обойти, поместив определенные фигуры (вроде Rectangle и Ellipse) непосредственно в контейнер, автоматически изменяющий размер (такой как Grid). Viewbox может затем вычислить минимальный размер, необходимый Grid для вмещения своего содержимого, и затем масштабирует его соответствующим образом. Однако простейший способ получить нужный размер Viewbox — это поместить ваше содержимое в элемент фиксированного размера, будь то Canvas, кнопка или что-то еще. Этот фиксированный размер становится начальным размером, который использует Viewbox для своих вычислений. Такое жесткое кодирование размера не ограничит гибкости вашей компоновки, поскольку Viewbox изменяет размер пропорционально, на основе доступного пространства его контейнера компоновки.
На заметку! Независимо от того, используете ли вы Viewbox, ваша графика будет менять размер для компенсации разных системных настроек DPI (как описано в главе 1). Другими словами, прямоугольник в системе с 96 dpi будет отображен в меньшем количестве пикселей, чем тот же прямоугольник в системе с 120 dpi.
Book_Pro_WPF-2.mdb 367 19.05.2008 18:10:24
368 Глава 13
Line
Фигура Line представляет отрезок прямой, соединяющий между собой две точки. Начальная и конечная точки устанавливаются свойствами X1 и Y1 (для первой точки) и X2 и Y2 (для второй точки). Например, ниже показан код линии, простирающейся от (0,0) до (10,100):
<Line Stroke="Blue" X1="0" Y1="0" X2="10" Y2="100"></Line>
Свойство Fill не имеет никакого эффекта для линии. Вы должны устанавливать свойство Stroke.
Координаты, используемые для линии, отсчитываются относительно верхнего левого угла контейнера, в котором она содержится. Например, если вы поместите предыдущую линию в StackPanel, то координаты (0,0) будут указывать на то место, куда помещается элемент в этой StackPanel. Это может быть верхний левый угол окна, а может и нет. Если StackPanel использует ненулевое значение Margin, или же линии предшествуют другие элементы, то начало точки (0,0) окажется на некотором расстоянии от вершины окна.
Однако для линии вполне допускается использовать отрицательные координаты. Фактически, вы можете использовать координаты, которые унесут вашу линию за пределы выделенного пространства и она будет нарисована поверх любой другой части окна. Это невозможно для фигур Rectangle и Ellipse, которые мы рассматривали до сих пор. Однако у такой модели есть недостаток, а именно: линия не может использовать модель “плавающего содержимого”. Это значит, что для линии невозможно установить такие свойства, как Margin, HorizontalAlignment и VerticalAlignment — они не будут иметь никакого эффекта. То же ограничение касается фигур Polyline и Polygon.
На заметку! Вы можете использовать свойства Height, Width и Stretch для линии, хотя это не особо принято. Базовая технология предусматривает применение Height и Width для определения пространства, выделенного под линию, с последующим использованием свойства Stretch для изменения размера линии, чтобы она уместилась в эту область.
Если вы помещаете Line в Canvas, то присоединенные свойства позиции (такие как Top и Left) по-прежнему применимы. Они определяют стартовую позицию линии. Другими словами, две координаты линии задают величину смещения. Рассмотрим следующую линию:
<Line Stroke="Blue" X1="0" Y1="0" X2="10" Y2="100"
Canvas.Left="5" Canvas.Top="100"></Line>
Она простирается от (0,0) до (10,100), используя систему координат, которая трактует точку (5,100) в Canvas как (0,0). Это делает ее эквивалентной линии, не использующей свойств Top и Left:
<Line Stroke="Blue" X1="5" Y1="100" X2="15" Y2="200"></Line>
Использование свойства позиционирования при помещении Line в Canvas остается на ваше усмотрение. Часто вы можете упростить рисование линии, выбрав подходящую начальную точку. Также это может облегчить перемещение частей вашего рисунка. Например, если вы рисуете несколько линий и других фигур в определенной позиции Canvas, то будет неплохо рисовать их относительно некоторой близлежащей точки (указывая одинаковые координаты Top и Left). Таким образом, при необходимости вы можете сместить сразу часть вашего рисунка в новую точку.
На заметку! Не существует способа создать кривую линию из фигур Line или Polyline. Вместо них вам понадобится более совершенный класс Path, который рассматривается в главе 14.
Book_Pro_WPF-2.mdb 368 19.05.2008 18:10:25
Фигуры, трансформации и кисти 369
Polyline
Класс Polyline позволяет рисовать последовательность связанных отрезков прямых. Вы просто применяете список координат X и Y, используя для этого свойство Points. С технической точки зрения свойство Points требует объекта PointCollection, но вы заполняете эту коллекцию в XAML, используя лаконичный строчный синтаксис. Вам нужно просто применить список точек, описанных координатами с разделителем (пробелом или запятой) между ними.
Предыдущая << 1 .. 182 183 184 185 186 187 < 188 > 189 190 191 192 193 194 .. 473 >> Следующая