首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >圆形角仅在视觉的一侧

圆形角仅在视觉的一侧
EN

Stack Overflow用户
提问于 2021-03-17 02:22:11
回答 1查看 75关注 0票数 0

我想要一个圆角的Visual。下面是我的代码:

代码语言:javascript
复制
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来实现我正在获得的目标?作为参考,下面是我想要的最终结果。

而不是我现在拥有的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-17 07:01:09

您可以尝试使用偏移属性和CompositionRoundedRectangleGeometry实例的CornerRadius属性来获得目标效果。Visual.Clip属性指定视觉裁剪区域。当呈现视觉时,只显示位于裁剪区域内的视觉支持,而在裁剪区域之外扩展的任何内容都被裁剪。因此,我们可以通过调整visual的大小和clip的大小和偏移量来切断圆角矩形右侧的一小部分。

请检查以下代码作为示例:

代码语言:javascript
复制
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的大小相同,并设置clipOffset属性值,使圆角矩形的右侧超过visual的大小。Offset属性的第一个参数表示clipvisual之间的左和右空间。我将Offset的值设置为float2(20, 0),使圆角矩形的右侧超过visual的大小。您可以根据需要调整Offset属性的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66666113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档