我想要一个圆角的Visual。下面是我的代码:
auto clip = compositor->CreateGeometricClip();
auto roundedRectangle = compositor->CreateRoundedRectangleGeometry();
roundedRectangle->Size = Windows::Foundation::Numerics::float2(width, height);
roundedRectangle->CornerRadius = Windows::Foundation::Numerics::float2(10, 10);
clip->Geometry = roundedRectangle;
visual->Clip = clip;这是可行的,但这会在视觉的所有四个角上创建圆角。是否有可能使用Composition API来实现我正在获得的目标?作为参考,下面是我想要的最终结果。

而不是我现在拥有的

发布于 2021-03-17 07:01:09
您可以尝试使用偏移属性和CompositionRoundedRectangleGeometry实例的CornerRadius属性来获得目标效果。Visual.Clip属性指定视觉裁剪区域。当呈现视觉时,只显示位于裁剪区域内的视觉支持,而在裁剪区域之外扩展的任何内容都被裁剪。因此,我们可以通过调整visual的大小和clip的大小和偏移量来切断圆角矩形右侧的一小部分。
请检查以下代码作为示例:
auto clip = _compositor->CreateGeometricClip();
auto roundedRectangle = _compositor->CreateRoundedRectangleGeometry();
roundedRectangle->Size = float2(100, 100);
//roundedRectangle->CornerRadius = float2(20, 20);
roundedRectangle->Offset = float2(20, 0);
clip->Geometry = roundedRectangle;
//auto visual = _compositor->CreateSpriteVisual();
//visual->Brush = _compositor->CreateColorBrush(ColorHelper::FromArgb(0xFF, 0xFF, 0x11, 0xFF));
visual->Size = float2(100+20, 100);
roundedRectangle->Size = visual->Size;
visual->Clip = clip;该键让visual的大小与clip的大小相同,并设置clip的Offset属性值,使圆角矩形的右侧超过visual的大小。Offset属性的第一个参数表示clip和visual之间的左和右空间。我将Offset的值设置为float2(20, 0),使圆角矩形的右侧超过visual的大小。您可以根据需要调整Offset属性的值。
https://stackoverflow.com/questions/66666113
复制相似问题