CompositionNineGridBrush Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Рисует SpriteVisual с помощью CompositionBrush после применения Nine-Grid Растяжения к содержимому исходной кисти. Источник растяжения с девятью сетками может быть любым CompositionBrush типа CompositionColorBrush, CompositionSurfaceBrush или CompositionEffectBrush.
public ref class CompositionNineGridBrush sealed : CompositionBrush
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.LiftedContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class CompositionNineGridBrush final : CompositionBrush
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.WindowsAppSDKContract, 65536)]
class CompositionNineGridBrush final : CompositionBrush
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.LiftedContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class CompositionNineGridBrush : CompositionBrush
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.WindowsAppSDKContract), 65536)]
public sealed class CompositionNineGridBrush : CompositionBrush
Public NotInheritable Class CompositionNineGridBrush
Inherits CompositionBrush
- Наследование
- Атрибуты
Примеры
Применение Nine-Grid растяжения к ресурсу кнопки (источник CompositionSurfaceBrush)
private SpriteVisual CreateNineGridVisualFromImageSurface(ICompositionSurface imgSurface)
{
CompositionSurfaceBrush sourceBrush = _compositor.CreateSurfaceBrush(imgSurface);
// imgSurface is 50x50 pixels; nine-grid insets, as measured in the asset, are:
// left = 1, top = 5, right = 10, bottom = 20 (in pixels)
// create NineGridBrush to paint onto SpriteVisual
CompositionNineGridBrush ninegridBrush = _compositor.CreateNineGridBrush();
// set SurfaceBrush as Source to NineGridBrush
ninegridBrush.Source = sourceBrush;
// set Nine-Grid Insets
ninegridBrush.SetInsets(1, 5, 10, 20);
// set appropriate Stretch on SurfaceBrush for Center of Nine-Grid
sourceBrush.Stretch = CompositionStretch.Fill;
// create SpriteVisual and paint w/ NineGridBrush
SpriteVisual visual = _compositor.CreateSpriteVisual();
visual.Size = new Vector2(100, 75);
visual.Brush = ninegridBrush;
return visual;
}
Создание границы сплошного цвета (источникCompositionColorBrush)
private SpriteVisual CreateBorderVisual(SpriteVisual childContent, float borderThickness, Color borderColor)
{
SpriteVisual borderVisual = _compositor.CreateSpriteVisual();
borderVisual.Size = childContent.Size + new Vector2(2 * borderThickness);
// create NineGridBrush w/ ColorBrush Source
CompositionNineGridBrush ninegridBrush = _compositor.CreateNineGridBrush();
ninegridBrush.Source = _compositor.CreateColorBrush(borderColor);
ninegridBrush.SetInsets(borderThickness);
// opt out of drawing Center of Nine-Grid
ninegridBrush.IsCenterHollow = true;
// paint SpriteVisual w/ NineGridBrush
borderVisual.Brush = ninegridBrush;
// set child visual appropriately; manage size/scale changed events separately
childContent.Offset = new Vector3(borderThickness, borderThickness, 0);
borderVisual.Children.InsertAtTop(childContent);
return borderVisual;
}
Использование ExpressionAnimation для динамического обновления наборов масштабов
private void CounterScaleInsets(SpriteVisual ninegridVisual)
{
CompositionNineGridBrush ninegridBrush = (CompositionNineGridBrush)ninegridVisual.Brush;
// use expressions to counter a scale transformation on visual so as to maintain a constant inset thickness
ExpressionAnimation counterScaleXAnimation = _compositor.CreateExpressionAnimation("1/visual.Scale.X");
counterScaleXAnimation.SetReferenceParameter("visual", ninegridVisual);
ExpressionAnimation counterScaleYAnimation = _compositor.CreateExpressionAnimation("1/visual.Scale.Y");
counterScaleYAnimation.SetReferenceParameter("visual", ninegridVisual);
// start ExpressionAnimation on Nine-Grid InsetScales
ninegridBrush.StartAnimation("LeftInsetScale", counterScaleXAnimation);
ninegridBrush.StartAnimation("RightInsetScale", counterScaleXAnimation);
ninegridBrush.StartAnimation("TopInsetScale", counterScaleYAnimation);
ninegridBrush.StartAnimation("BottomInsetScale", counterScaleYAnimation);
}
Применение эффекта к Nine-Grid растянутого содержимого (CompositionNineGridBrush в качестве входных данных для CompositionEffectBrush)
private void DesaturateNineGridVisual(SpriteVisual ninegridVisual)
{
// get the NineGridBrush that the SpriteVisual is painted with
CompositionNineGridBrush ninegridBrush = (CompositionNineGridBrush)ninegridVisual.Brush;
// get or define IGraphicsEffect
var saturationEffect = new SaturationEffect
{
Saturation = 0f,
Source = new CompositionEffectSourceParameter("source"),
};
// create EffectBrush from EffectFactory
CompositionEffectFactory saturationFactory = _compositor.CreateEffectFactory(saturationEffect);
CompositionEffectBrush saturationBrush = saturationFactory.CreateBrush();
// input NineGridBrush to EffectBrush
saturationBrush.SetSourceParameter("source", ninegridBrush);
// paint SpriteVisual with EffectBrush (w/ NineGridBrush as source parameter)
ninegridVisual.Brush = saturationBrush;
}
Применение Nine-Grid растяжения к маске непрозрачности (CompositionNineGridBrush в качестве входных данных для CompositionMaskBrush)
private SpriteVisual CreateMaskedRoundedRectVisual(ICompositionSurface myRoundedRectMaskSurface)
{
// ColorBrush to be set as MaskBrush.Source
CompositionColorBrush colorBrush = _compositor.CreateColorBrush(Colors.Blue);
// SurfaceBrush w/ opacity mask surface
CompositionSurfaceBrush roundedRectBrush = _compositor.CreateSurfaceBrush(myRoundedRectMaskSurface);
roundedRectBrush.Stretch = CompositionStretch.Fill; // stretch for center of nine-grid
// NineGridBrush w/ insets on opacity mask surface
CompositionNineGridBrush ninegridBrush = _compositor.CreateNineGridBrush();
ninegridBrush.Source = roundedRectBrush;
ninegridBrush.SetInsets(_cornerRadius); // the radius, in pixels, of the corner as specified on my opacity mask surface
// Create MaskBrush
CompositionMaskBrush maskBrush = _compositor.CreateMaskBrush();
maskBrush.Source = colorBrush;
maskBrush.Mask = ninegridBrush;
// Paint SpriteVisual with MaskBrush
SpriteVisual sprite = _compositor.CreateSpriteVisual();
sprite.Size = new Vector2(300, 200);
sprite.Brush = maskBrush;
return sprite;
}
Комментарии
Nine-Grid растяжение означает секционирование визуального содержимого (содержимого исходной кисти, нарисованной на spriteVisual) в сетку из девяти прямоугольников, чтобы размеры угловых прямоугольников сохранялись при изменении размера, как показано на схеме ниже.
При изменении размера или масштабировании объекта SpriteVisual , окрашенного с помощью CompositionNineGridBrush, левое и правое поля (прямоугольники 4 и 6) тянутся вдоль вертикальной оси, верхний и нижний поля прямоугольники (прямоугольники 2 и 8) тянутся вдоль горизонтальной оси, а центр (прямоугольник 5) растягивается вдоль обеих осей, пока углы (прямоугольники 1,3,7 и 9) не растягиваются.
Свойство Source объекта CompositionNineGridBrush принимает кисти одного из двух типов:
- CompositionSurfaceBrush: примените Nine-Grid растяжение к поверхности текстурированного изображения.
- CompositionColorBrush: создание границ сплошного цвета.
Заметки об источнике CompositionSurfaceBrush
Наборы задаются в виде значений пикселей, измеряемых в пространстве координат ICompositionSurface , связанном с CompositionSurfaceBrush. Связь между врезкой, указанной в пространстве координат поверхности, и вставкой, отображаемой при нарисовке на spriteVisual , выглядит следующим образом:
Inset_Surface*InsetScale=Inset_SpriteVisual
The CompositionSurfaceBrush. Свойство Stretch указывает, как растягивается содержимое центра Nine-Grid.
Наборы NineGridBrush, указанные в скругляемом ресурсе прямоугольника с помощью CompositionStretch.Fill; Наборы задаются в пикселях (измеряется в пространстве координат ICompositionSurface, содержащего ресурс).
CompositionNineGridBrush не предназначен для применения Nine-Grid масштабирования к источнику CompositionSurfaceBrush , к которому применяется преобразование с помощью одного из следующих свойств:
- CompositionSurfaceBrush.AnchorPoint
- CompositionSurfaceBrush.CenterPoint
- CompositionSurfaceBrush.Offset
- CompositionSurfaceBrush.RotationAngle
- CompositionSurfaceBrush.RotationAngleInDegrees
- CompositionSurfaceBrush.Scale
- CompositionSurfaceBrush.TransformMatrix. Если к источнику CompositionSurfaceBrush применяется операция преобразования CompositionSurfaceBrush к CompositionNineGridBrush, будет отрисована не пиксельное содержимое.
Применение Nine-Grid растяжения к маске непрозрачности
Содержимое источника CompositionSurfaceBrush также может быть поверхностью маски непрозрачности. Результирующий объект CompositionNineGridBrush может быть задан как Mask для CompositionMaskBrush. Это позволит замаскированному содержимому масштабироваться по желанию, а маска непрозрачности подвергается Nine-Grid растяжения.
Аналогичным образом , источник для CompositionMaskBrush также может иметь тип CompositionNineGridBrush.
Применение эффекта к CompositionNineGridBrush
CompositionNineGridBrush можно задать в качестве источника для CompositionEffectBrush , чтобы применить IGraphics или Windows.UI.Composition.Effect к его Nine-Grid растянутого содержимого.
Примечания к источнику CompositionColorBrush
В сочетании со свойством IsCenterHollowисточникCompositionColorBrush позволяет создавать границы сплошного цвета. Обратите внимание, что наборы для источникаCompositionColorBrush измеряются в пространстве координат самого SpriteVisual.
Примечания по толщине и масштабу набора
Толщина вставки объекта CompositionNineGridBrush не изменяется при изменении свойства Size связанного spriteVisual .
Свойства масштабирования набора предоставляют механизм масштабирования Nine-Grid наборов от координатного пространства кисти (например, пиксельного пространства для изображения) до пространства SpriteVisual. Например, свойства шкалы набора можно использовать для управления толщиной вставки в ответ на преобразование масштаба, унаследованное от SpriteVisual , на который нарисовывается NineGridBrush, или произвольный предок в визуальном дереве (например, в случаях шкалы DPI и т. д.). В этом случае ExpressionAnimationпредоставляет средства для динамического обновления значений шкалы набора.
Свойства
BottomInset |
Вставка от нижнего края исходного содержимого, указывающего толщину нижней строки. Значение по умолчанию — 0.0f. |
BottomInsetScale |
Масштабирование, применяемое к BottomInset. Значение по умолчанию — 1.0f. |
Comment |
Строка, связанная с CompositionObject. (Унаследовано от CompositionObject) |
Compositor |
Составитель, используемый для создания этого объекта CompositionObject. (Унаследовано от CompositionObject) |
DispatcherQueue |
Возвращает DispatcherQueue для CompositionObject. (Унаследовано от CompositionObject) |
ImplicitAnimations |
Коллекция неявных анимаций, присоединенных к этому объекту. (Унаследовано от CompositionObject) |
IsCenterHollow |
Указывает, рисуется ли центр Nine-Grid. |
LeftInset |
Вставка от левого края исходного содержимого, указывающего толщину левого столбца. Значение по умолчанию — 0.0f. |
LeftInsetScale |
Масштабирование, применяемое к LeftInset. Значение по умолчанию — 1.0f. |
Properties |
Коллекция свойств, связанных с CompositionObject. (Унаследовано от CompositionObject) |
RightInset |
Вставка от правого края исходного содержимого, указывающего толщину правого столбца. Значение по умолчанию — 0.0f. |
RightInsetScale |
Масштабирование, применяемое к RightInset. Значение по умолчанию — 1.0f. |
Source |
Кисть, содержимое которой должно быть Nine-Grid растянутой. Может иметь тип CompositionSurfaceBrush или CompositionColorBrush. |
TopInset |
Вставка от верхнего края исходного содержимого, указывающего толщину верхней строки. Значение по умолчанию — 0.0f. |
TopInsetScale |
Масштабирование, применяемое к TopInset. Значение по умолчанию — 1.0f. |
Методы
Close() |
Закрывает объект CompositionObject и освобождает системные ресурсы. (Унаследовано от CompositionObject) |
Dispose() |
Выполняет определяемые приложением задачи, связанные с удалением, высвобождением или сбросом неуправляемых ресурсов. (Унаследовано от CompositionObject) |
PopulatePropertyInfo(String, AnimationPropertyInfo) |
Определяет свойство, которое можно анимировать. (Унаследовано от CompositionObject) |
SetInsets(Single) |
Задает наборы CompositionNineGridBrush, используя одно и то же значение для верхнего, нижнего, левого и правого. Значение по умолчанию — 0.0f. |
SetInsets(Single, Single, Single, Single) |
Задает наборы CompositionNineGridBrush, используя указанные значения для верхнего, нижнего, левого и правого. Значение по умолчанию — 0.0f. |
SetInsetScales(Single) |
Задает (одинаковый) масштаб, применяемый к левым, верхним, правым и нижним наборам. Значение по умолчанию — 1.0f. |
SetInsetScales(Single, Single, Single, Single) |
Задает масштаб, применяемый к левым, верхним, правым и нижним наборам соответственно. Значение по умолчанию — 1.0f. |
StartAnimation(String, CompositionAnimation) |
Подключает анимацию к указанному свойству объекта и запускает анимацию. (Унаследовано от CompositionObject) |
StartAnimation(String, CompositionAnimation, AnimationController) |
Подключает анимацию к указанному свойству объекта и запускает анимацию. (Унаследовано от CompositionObject) |
StartAnimationGroup(ICompositionAnimationBase) |
Запускает группу анимации. Метод StartAnimationGroup в CompositionObject позволяет запустить CompositionAnimationGroup. Все анимации в группе будут запущены одновременно для объекта . (Унаследовано от CompositionObject) |
StopAnimation(String) |
Отключает анимацию от указанного свойства и останавливает анимацию. (Унаследовано от CompositionObject) |
StopAnimationGroup(ICompositionAnimationBase) |
Останавливает группу анимации. (Унаследовано от CompositionObject) |
TryGetAnimationController(String) |
Возвращает AnimationController для анимации, выполняемой с указанным свойством. (Унаследовано от CompositionObject) |
Применяется к
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по