CompositionNineGridBrush Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Melukis SpriteVisual dengan CompositionBrush setelah menerapkan Nine-Grid Stretching ke isi kuas Sumber. Sumber peregangan sembilan kisi dapat dengan KomposisiBrush jenis KomposisiColorBrush, KomposisiSurfaceBrush atau KomposisiEffectBrush.
public ref class CompositionNineGridBrush sealed : CompositionBrush
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 196608)]
/// [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.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 196608)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class CompositionNineGridBrush : CompositionBrush
Public NotInheritable Class CompositionNineGridBrush
Inherits CompositionBrush
- Warisan
- Atribut
Persyaratan Windows
Rangkaian perangkat |
Windows 10 Anniversary Edition (diperkenalkan dalam 10.0.14393.0)
|
API contract |
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v3.0)
|
Contoh
Terapkan Nine-Grid Stretching ke aset tombol (KomposisiSurfaceBrushSource)
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;
}
Membuat batas warna solid (Sumber 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;
}
Menggunakan ExpressionAnimation untuk memperbarui skala inset secara dinamis
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);
}
Terapkan efek pada konten Nine-Grid Stretched (KomposisiNineGridBrush sebagai input ke KomposisiEffectBrush)
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;
}
Terapkan Nine-Grid Stretching ke masker opasitas (KomposisiNineGridBrush sebagai input ke 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;
}
Keterangan
Nine-Grid peregangan mengacu pada pemartisian konten visual (konten kuas sumber yang akan dicat ke SpriteVisual) ke dalam kisi sembilan persegi panjang sedemikian rupa sehingga ukuran persegi sudut dipertahankan saat mengubah ukuran, seperti yang ditunjukkan pada diagram di bawah ini:
Ketika SpriteVisual dicat dengan KomposisiNineGridBrush diubah ukurannya atau diskalakan, margin kiri dan kanan (persegi panjang 4 dan 6) membentang di sepanjang sumbu vertikal, persegi panjang margin atas dan bawah (persegi panjang 2 dan 8) membentang di sepanjang sumbu horizontal, dan tengah (persegi 5) direntangkan di sepanjang kedua sumbu sementara sudut (persegi panjang 1,3,7, dan 9) tidak membentang.
Properti Sumber dari CompositionNineGridBrush menerima kuas dari salah satu dari dua jenis:
- KomposisiSurfaceBrush: terapkan Nine-Grid Stretching ke permukaan gambar berteksur.
- CompositionColorBrush: buat batas warna solid.
Catatan tentang KomposisiSurfaceBrush Sumber
Inset ditentukan sebagai nilai piksel yang diukur dalam ruang koordinat ICompositionSurface yang terkait dengan KomposisiSurfaceBrush. Hubungan antara inset yang ditentukan dalam ruang koordinat permukaan dan inset saat muncul saat dicat pada SpriteVisual adalah sebagai berikut:
Inset_Surface*InsetScale=Inset_SpriteVisual
KomposisiSurfaceBrush. Properti Stretch menentukan bagaimana konten pusat Nine-Grid direntangkan.
NineGridBrush Insets ditentukan pada aset persegi panjang bulat dengan CompositionStretch.Fill; Inset ditentukan dalam piksel (diukur dalam ruang koordinat ICompositionSurface yang berisi aset)
KomposisiNineGridBrush tidak dirancang untuk menerapkan penskalaan Nine-Grid ke sumber KomposisiSurfaceBrush yang memiliki transformasi yang diterapkan melalui salah satu properti berikut:
- KomposisiSurfaceBrush.AnchorPoint
- KomposisiSurfaceBrush.CenterPoint
- KomposisiSurfaceBrush.Offset
- KomposisiSurfaceBrush.RotationAngle
- KomposisiSurfaceBrush.RotationAngleInDegrees
- KomposisiSurfaceBrush.Scale
- KomposisiSurfaceBrush.TransformMatrix Tidak ada konten piksel yang akan diambil jika ada operasi transformasi yang diterapkan pada sumber KomposisiSurfaceBrush ke KomposisiNineGridBrush.
Menerapkan Nine-Grid Stretching ke Masker Opasitas
Isi sumber KomposisiSurfaceBrush mungkin juga merupakan permukaan masker opasitas. KomposisiNineGridBrush yang dihasilkan kemudian dapat ditetapkan sebagai Masker ke CompositionMaskBrush. Ini akan memungkinkan konten yang diselubungi untuk diskalakan seperti yang diinginkan saat masker opasitas tunduk pada Nine-Grid Stretching.
Demikian pula, Sumber ke KomposisiMaskBrush mungkin juga berjenis KomposisiNineGridBrush.
Menerapkan Efek ke KomposisiNineGridBrush
KomposisiNineGridBrush dapat diatur sebagai sumber ke KomposisiEffectBrush untuk menerapkan IGraphics atau Windows.UI.Composition.Effect ke isi Nine-Grid Direntangkan.
Catatan tentang Sumber CompositionColorBrush
Bersama dengan properti IsCenterHollow, Sumber CompositionColorBrush memungkinkan pembuatan batas warna solid. Perhatikan bahwa inset untuk Sumber CompositionColorBrush diukur dalam ruang koordinat SpriteVisual itu sendiri.
Catatan tentang Ketebalan Inset dan Skala Inset
Ketebalan inset KomposisiNineGridBrush tidak berubah jika properti UkuranSpriteVisual terkait diubah.
Properti skala inset menyediakan mekanisme untuk menskalakan Nine-Grid Inset dari ruang koordinat kuas (seperti ruang piksel untuk gambar) ke SpriteVisual. Misalnya, properti skala inset dapat digunakan untuk mengontrol ketebalan inset sebagai respons terhadap transformasi skala yang diwarisi dari SpriteVisual bahwa NineGridBrush dicat ke atau leluhur arbitrer di pohon Visual-nya (seperti dalam kasus skala DPI, dll.). Dalam hal ini, ExpressionAnimationmenyediakan sarana untuk memperbarui nilai skala inset secara dinamis.
Properti
BottomInset |
Set dari tepi bawah konten sumber yang menentukan ketebalan baris bawah. Default ke 0,0f. |
BottomInsetScale |
Skalakan untuk diterapkan ke BottomInset. Default ke 1.0f. |
Comment |
String yang akan dikaitkan dengan CompositionObject. (Diperoleh dari CompositionObject) |
Compositor |
Compositor digunakan untuk membuat CompositionObject ini. (Diperoleh dari CompositionObject) |
Dispatcher |
Dispatcher untuk CompositionObject. (Diperoleh dari CompositionObject) |
DispatcherQueue |
Mendapatkan DispatcherQueue untuk CompostionObject. (Diperoleh dari CompositionObject) |
ImplicitAnimations |
Kumpulan animasi implisit yang melekat pada objek ini. (Diperoleh dari CompositionObject) |
IsCenterHollow |
Menunjukkan apakah pusat Nine-Grid digambar. |
LeftInset |
Inset dari tepi kiri konten sumber yang menentukan ketebalan kolom kiri. Default ke 0,0f. |
LeftInsetScale |
Skalakan untuk diterapkan ke LeftInset. Default ke 1.0f. |
Properties |
Kumpulan properti yang terkait dengan CompositionObject. (Diperoleh dari CompositionObject) |
RightInset |
Inset dari tepi kanan konten sumber yang menentukan ketebalan kolom kanan. Default ke 0,0f. |
RightInsetScale |
Skalakan untuk diterapkan ke RightInset. Default ke 1.0f. |
Source |
Kuas yang isinya harus Nine-Grid direntangkan. Dapat berjenis KomposisiSurfaceBrush atau KomposisiColorBrush. |
TopInset |
Inset dari tepi atas konten sumber yang menentukan ketebalan baris atas. Default ke 0,0f. |
TopInsetScale |
Skalakan untuk diterapkan ke TopInset. Default ke 1.0f. |
Metode
Close() |
Menutup CompositionObject dan merilis sumber daya sistem. (Diperoleh dari CompositionObject) |
ConnectAnimation(String, CompositionAnimation) |
Menyambungkan dan animasi. (Diperoleh dari CompositionObject) |
DisconnectAnimation(String) |
Memutuskan sambungan animasi. (Diperoleh dari CompositionObject) |
Dispose() |
Melakukan tugas yang ditentukan aplikasi yang terkait dengan membebaskan, melepaskan, atau mereset sumber daya yang tidak terkelola. (Diperoleh dari CompositionObject) |
PopulatePropertyInfo(String, AnimationPropertyInfo) |
Menentukan properti yang dapat dianimasikan. (Diperoleh dari CompositionObject) |
SetInsets(Single) |
Mengatur inset KomposisiNineGridBrush menggunakan nilai yang sama untuk atas, bawah, kiri, dan kanan. Default ke 0,0f. |
SetInsets(Single, Single, Single, Single) |
Mengatur inset KomposisiNineGridBrush menggunakan nilai yang ditentukan untuk atas, bawah, kiri, dan kanan. Default ke 0,0f. |
SetInsetScales(Single) |
Mengatur skala (sama) yang akan diterapkan ke inset kiri, atas, kanan, dan bawah. Default ke 1.0f. |
SetInsetScales(Single, Single, Single, Single) |
Mengatur skala yang akan diterapkan ke inset kiri, atas, kanan, dan bawah masing-masing. Default ke 1.0f. |
StartAnimation(String, CompositionAnimation) |
Menyambungkan animasi dengan properti objek yang ditentukan dan memulai animasi. (Diperoleh dari CompositionObject) |
StartAnimation(String, CompositionAnimation, AnimationController) |
Menyambungkan animasi dengan properti objek yang ditentukan dan memulai animasi. (Diperoleh dari CompositionObject) |
StartAnimationGroup(ICompositionAnimationBase) |
Memulai grup animasi. Metode StartAnimationGroup pada CompositionObject memungkinkan Anda memulai KomposisiAnimationGroup. Semua animasi dalam grup akan dimulai pada saat yang sama pada objek. (Diperoleh dari CompositionObject) |
StopAnimation(String) |
Memutuskan sambungan animasi dari properti yang ditentukan dan menghentikan animasi. (Diperoleh dari CompositionObject) |
StopAnimationGroup(ICompositionAnimationBase) |
Menghentikan grup animasi. (Diperoleh dari CompositionObject) |
TryGetAnimationController(String) |
Mengembalikan AnimationController untuk animasi yang berjalan pada properti yang ditentukan. (Diperoleh dari CompositionObject) |
Berlaku untuk
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk