DropShadow 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
由 SpriteVisual 或 LayerVisual 投射的陰影。
public ref class DropShadow sealed : CompositionShadow
/// [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 DropShadow final : CompositionShadow
/// [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 DropShadow final : CompositionShadow
[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 DropShadow : CompositionShadow
[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 DropShadow : CompositionShadow
Public NotInheritable Class DropShadow
Inherits CompositionShadow
- 繼承
- 屬性
範例
簡易投影
private async void InitComposition()
{
_compositor = ElementCompositionPreview.GetElementVisual(MyGrid).Compositor;
_imageLoader = ImageLoaderFactory.CreateImageLoader(_compositor);
//Create surface brush and load image
CompositionSurfaceBrush surfaceBrush = _compositor.CreateSurfaceBrush();
surfaceBrush.Surface = await _imageLoader.LoadImageFromUriAsync(new Uri("ms-appx:///Assets/cat.jpg"));
//Create sprite visual
SpriteVisual visual = _compositor.CreateSpriteVisual();
visual.Brush = surfaceBrush;
visual.Size = new Vector2(270, 200);
//Create drop shadow
DropShadow shadow = _compositor.CreateDropShadow();
shadow.BlurRadius = 5;
shadow.Offset = new Vector3(15, 15, -10);
shadow.Color = Colors.DarkGray;
//Associate shadow with visual
visual.Shadow = shadow;
}
帶動畫的投影投影
private async void InitComposition()
{
_compositor = ElementCompositionPreview.GetElementVisual(MyGrid).Compositor;
_imageLoader = ImageLoaderFactory.CreateImageLoader(_compositor);
//Create surface brush and load image
CompositionSurfaceBrush surfaceBrush = _compositor.CreateSurfaceBrush();
surfaceBrush.Surface = await _imageLoader.LoadImageFromUriAsync(new Uri("ms-appx:///Assets/cat.jpg"));
//Create sprite visual
SpriteVisual visual = _compositor.CreateSpriteVisual();
visual.Brush = surfaceBrush;
visual.Size = new Vector2(270, 200);
//Create drop shadow
DropShadow shadow = _compositor.CreateDropShadow();
shadow.BlurRadius = 5;
shadow.Offset = new Vector3(15, 15, -10);
shadow.Color = Colors.DarkGray;
//Create animations
ScalarKeyFrameAnimation blurAnimation = this.CreateBlurAnimation();
Vector3KeyFrameAnimation offsetAnimation = this.CreateOffsetAnimation();
//Apply animations
shadow.StartAnimation("BlurRadius", blurAnimation);
shadow.StartAnimation("Offset", offsetAnimation);
//Associate shadow with visual
visual.Shadow = shadow;
}
private ScalarKeyFrameAnimation CreateBlurAnimation()
{
ScalarKeyFrameAnimation shadowBlurAnimation = _compositor.CreateScalarKeyFrameAnimation();
shadowBlurAnimation.InsertKeyFrame(0.0f, 5.0f);
shadowBlurAnimation.InsertKeyFrame(0.5f, 20.0f);
shadowBlurAnimation.InsertKeyFrame(1.0f, 5.0f);
shadowBlurAnimation.Duration = TimeSpan.FromSeconds(2);
shadowBlurAnimation.IterationBehavior = AnimationIterationBehavior.Forever;
return shadowBlurAnimation;
}
private Vector3KeyFrameAnimation CreateOffsetAnimation()
{
Vector3 startOffset = new Vector3(15, 15, -10);
Vector3 endOffset = new Vector3(30, 30, -20);
Vector3KeyFrameAnimation offsetAnimation = _compositor.CreateVector3KeyFrameAnimation();
offsetAnimation.InsertKeyFrame(0.0f, startOffset);
offsetAnimation.InsertKeyFrame(0.5f, endOffset);
offsetAnimation.InsertKeyFrame(1.0f, startOffset);
offsetAnimation.Duration = TimeSpan.FromSeconds(2);
offsetAnimation.IterationBehavior = AnimationIterationBehavior.Forever;
return offsetAnimation;
}
DropShadow 使用 CompositionDropShadowSourcePolicy 從視覺化筆刷繼承 alpha
private async void InitComposition()
{
_compositor = ElementCompositionPreview.GetElementVisual(MyGrid).Compositor;
//Create surface brush and load image
CompositionSurfaceBrush surfaceBrush = _compositor.CreateSurfaceBrush();
surfaceBrush.Surface = LoadedImageSurface.StartLoadFromUri(new Uri("ms-appx:///Assets/circle.png"));
//Create sprite visual
SpriteVisual visual = _compositor.CreateSpriteVisual();
visual.Brush = surfaceBrush;
visual.Size = new Vector2(270, 200);
//Create drop shadow
DropShadow shadow = _compositor.CreateDropShadow();
shadow.BlurRadius = 5;
shadow.Offset = new Vector3(15, 15, -10);
shadow.Color = Colors.DarkGray;
//Specify mask policy for shadow
shadow.SourcePolicy = CompositionDropShadowSourcePolicy.InheritFromVisualContent;
//Associate shadow with visual
visual.Shadow = shadow;
}
備註
投影(DropShadows)是應用程式介面中提供深度指示的常見方式。 要新增 DropShadow,請建立一個 DropShadow 實例並使用 。 SpriteVisual 或 LayerVisual 上的陰影屬性。
陰影不會被視覺上隱含的剪輯(根據視覺大小)裁剪。 然而,陰影會尊重視覺上透過 SpriteVisual.Clip 屬性設定的明確剪輯設定。
屬性
| 名稱 | Description |
|---|---|
| BlurRadius |
用來產生陰影的高斯模糊半徑。 可被模仿。 |
| Color |
影子的顏色。 可被模仿。 |
| Comment |
一個用來關聯 CompositionObject 的字串。 (繼承來源 CompositionObject) |
| Compositor |
用於建立此 CompositionObject 的合成器。 (繼承來源 CompositionObject) |
| DispatcherQueue |
取得 CompositionObject 的 DispatcherQueue。 (繼承來源 CompositionObject) |
| ImplicitAnimations |
附加於此物件的隱含動畫集合。 (繼承來源 CompositionObject) |
| Mask |
刷子用來指定陰影的不透明度遮罩。 預設使用 SpriteVisual 的筆刷。 可被模仿。 |
| Offset |
陰影相對於其精靈視覺的偏移量。 可被模仿。 |
| Opacity |
陰影的不透明。 可被模仿。 |
| Properties |
與 CompositionObject 相關聯的屬性集合。 (繼承來源 CompositionObject) |
| SourcePolicy |
用來定義影子遮蔽政策,用於影子。 |
方法
| 名稱 | Description |
|---|---|
| Close() |
關閉 CompositionObject 並釋放系統資源。 (繼承來源 CompositionObject) |
| Dispose() |
執行與釋放、釋放或重設非受控資源相關聯的應用程式定義工作。 (繼承來源 CompositionObject) |
| PopulatePropertyInfo(String, AnimationPropertyInfo) |
定義了一個可以被動畫化的屬性。 (繼承來源 CompositionObject) |
| StartAnimation(String, CompositionAnimation, AnimationController) |
將動畫與物件指定的屬性連結起來,然後開始動畫。 (繼承來源 CompositionObject) |
| StartAnimation(String, CompositionAnimation) |
將動畫與物件指定的屬性連結起來,然後開始動畫。 (繼承來源 CompositionObject) |
| StartAnimationGroup(ICompositionAnimationBase) |
成立了一個動畫小組。 CompositionObject 上的 StartAnimationGroup 方法可以讓你啟動 CompositionAnimationGroup。 群組中的所有動畫都會同時在物件上啟動。 (繼承來源 CompositionObject) |
| StopAnimation(String) |
斷開動畫與指定屬性的連結並停止該動畫。 (繼承來源 CompositionObject) |
| StopAnimationGroup(ICompositionAnimationBase) |
停止一個動畫組。 (繼承來源 CompositionObject) |
| TryGetAnimationController(String) |
回傳一個 AnimationController,代表在指定屬性上執行的動畫。 (繼承來源 CompositionObject) |