Point Структура
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет значения координат X и Y, определяющие точку в двумерной плоскости.
public value class Point
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
struct Point
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
public struct Point
var point = {
x : /* Your value */,
y : /* Your value */
}
Public Structure Point
<object property="X,Y"/>
-or
<object property="X Y"/>
- Наследование
-
Point
- Атрибуты
Требования к Windows
Семейство устройств |
Windows 10 (появилось в 10.0.10240.0)
|
API contract |
Windows.Foundation.FoundationContract (появилось в v1.0)
|
Комментарии
Значение Point иногда представляет пространство координат в плоскости окна main приложения, но существуют и другие возможные интерпретации значений Point, которые могут различаться в зависимости от свойства, использующего значение Point.
Javascript: В JavaScript point — это объект с двумя свойствами данных: x и y. Кроме x и y, остальные API, перечисленные здесь в списках членов Point (или показанные в оглавлении), не применяются к программированию на JavaScript.
Примечания по синтаксису XAML
Значения точек широко используются для графических свойств и аналогичных свойств пользовательского интерфейса в словаре XAML для приложений среда выполнения Windows.
В качестве разделителя между значениями X и Y можно использовать пробел или запятую. Общее соглашение для координатных точек заключается в использовании разделителя запятой.
Точечная структура не может объявляться как ресурсы в ResourceDictionary. Возможный обходной путь — использовать ресурс x:String , а затем внедрить его в строку, которая анализируется с помощью XamlReader.Load.
Некоторые использования XAML используют тип Point для представления логической точки. См. раздел "Логические точки" в разделе Примечания.
Точечные значения и то, как они интерпретируются свойствами
Некоторые (но не все) использования типа Point указывают расположение в пространстве координат. В зависимости от контекста расположение может находиться в системе ссылок области содержимого или в пределах системы ссылок для определенного элемента макета.
X и Y для point могут быть не целыми значениями. Однако это может привести к возможности субпиксельной отрисовки, которая может изменять цвета и сглаживания любой прямой линии вдоль границы вложенного пикселя. Вот как обработчик отрисовки XAML обрабатывает границы вложенных пикселей. Поэтому для достижения наилучших результатов используйте целочисленные значения при объявлении координат и фигур, используемых для размещения и отрисовки пользовательского интерфейса.
X и Y для точки в некоторых случаях могут быть отрицательными. Как правило, это приводит к поимке, указывающей координату, которая намеренно находится за пределами системы отсчета, если нет дополнительного преобразования. Однако некоторые свойства XAML отклоняют значение Point с отрицательным значением X или Y как недопустимое. Ограничения значений обычно отмечаются на страницах ссылок для свойств.
Логические точки
Некоторые виды использования типа Point в приложениях среда выполнения Windows не связаны с координатными кадрами ссылок напрямую. Вместо этого это логические точки, где значения X и Y должны находиться в диапазоне от 0 до 1 включительно. Это одна из причин, почему значения X и Y поддерживают значения с плавающей запятой, а не ограничиваются целыми значениями. Значения логических точек интерпретируются контекстом: конечное представление или поведение может быть задано или изменено другим свойством или параметром. Иногда точки выражают информацию, которая вообще не связана с координатным пространством. Примерами концепции логической точки в приложении являются значения Animation.KeySpline (темп анимации), RenderTransformOriginэлемента UIElement и значения GradientStop.Offset для LinearGradientBrush.
Свойство point-value, которое является использованием логической точки, может сделать недействительными значения меньше 0 или больше 1, но особенности зависят от свойства. Ограничения значений обычно указываются на страницах ссылок для отдельных свойств, а не здесь в ссылке point.
Точечное значение и API графики XAML
Графические элементы, используемые для определения пользовательского интерфейса XAML, часто используют свойства point-value для объявления своих характеристик. Например, EllipseGeometry использует значение Point для задания свойства Center .
Графические элементы используют одну из двух моделей. Некоторые графические элементы являются производными от FrameworkElement. Эти элементы имеют определенное поведение отрисовки при размещении в пользовательском интерфейсе и при назначении свойств элемента. Примерами этого типа элементов являются Rectangle и все остальные типы в пространстве имен Windows.UI.Xaml.Shapes . Другие графические элементы не являются производными от FrameworkElement и не имеют собственного поведения отрисовки. Вместо этого эти элементы состоят для предоставления значения свойства в другом элементе, который имеет поведение отрисовки. Другими словами, это данные для более полной графической модели. Например, графические элементы, используемые для создания Path.Data, такие как LineSegment, часто имеют свойство Point-value.
Некоторые графические элементы используют несколько значений Point, представленных в одном свойстве. Эти свойства используют тип PointCollection . Любое свойство среда выполнения Windows, принимающее PointCollection, поддерживает синтаксис XAML, который анализирует строку атрибута для получения значений X и Y для нескольких точек. Примером графического свойства, использующего PointCollection , является Polygon.Points.
Указание значений из входных событий XAML и проверка нажатия
Значение Point возвращается данными события для определенных входных событий. Например, GetCurrentPoint предоставляет координатное значение того, где произошло событие указателя в пользовательском интерфейсе приложения. Вообще говоря, эти значения Point относятся к определенной системе координатной ссылки, и важно знать, что представляет эта система отсчета. Для событий ввода по умолчанию опорной рамкой является окно приложения main, а не общий экран или дисплей. Это обеспечивает согласованную систему отсчета в случае перемещения или изменения размера окна. Некоторые API, такие как GetCurrentPoint и GetPosition , также предоставляют способ преобразования в конкретный элемент системы ссылок, что полезно при работе с входными событиями, обрабатываемыми отдельным элементом управления. Дополнительные сведения см. в разделе Обработка входных данных указателя.
Разработка пользовательского интерфейса XAML также имеет концепцию, известную как тестирование нажатия, где можно использовать служебные методы для проверки того, как входные события будут сообщать сведения, если пользователь должен был выполнить действие указателя в определенном расположении координат пользовательского интерфейса. Для поддержки концепции тестирования попаданий 2 сигнатуры FindElementsInHostCoordinates используют входной параметр Point, как и FindSubElementsForTouchTargeting. Дополнительные сведения см. в статье Взаимодействие с помощью мыши.
Анимация значений точек
Среда выполнения Windows предоставляет средства для анимации значений любого свойства, которое использует Point в качестве значения, при условии, что это свойство реализуется как свойство зависимостей. Point имеет собственный тип поддержки анимации, так как невозможно по отдельности анимировать значения x и y точки. Структуры не могут поддерживать свойства зависимостей. Используйте тип PointAnimation для анимаций от до или используйте производные типы PointAnimationUsingKeyFrames для анимации по ключевым кадрам. Дополнительные сведения о том, как анимировать значение Point и как анимация работает в пользовательском интерфейсе XAML, см. в разделе Раскадровка анимации.
Проекция и члены point
Если вы используете язык Microsoft .NET (C# или Microsoft Visual Basic) или расширения компонентов Visual C++ (C++/CX), то point имеет доступные члены, не относящиеся к данным, и его члены данных предоставляются как свойства чтения и записи, а не поля. См . раздел Точка в браузере API .NET.
Если вы выполняете программирование с помощью C++/WinRT или библиотеки шаблонов среда выполнения Windows C++ (WRL), то в качестве элементов Point существуют только поля элементов данных, и вы не сможете использовать служебные методы или свойства проекции .NET. Код C++ может обращаться к аналогичным служебным методам, доступным из статического класса PointHelper .
В этой таблице показаны эквивалентные методы, доступные в .NET и C++.
.NET (точка) | C++ (PointHelper) |
---|---|
Point(Double, Double) | FromCoordinates(Single, Single) |
Поля
X |
Положение точки по горизонтали. |
Y |
Положение точки по вертикали. |