在UWP/WinUI中从VisualCollection中删除视觉效果的规范方法
我正在使用一个,并试图找出如何删除特定索引中的。Microsoft文档列出了一种可能的API,即。现在,我的用例如下(假设在UWP/WinUI中从VisualCollection中删除视觉效果的规范方法,uwp,c++-winrt,winui,Uwp,C++ Winrt,Winui,我正在使用一个,并试图找出如何删除特定索引中的。Microsoft文档列出了一种可能的API,即。现在,我的用例如下(假设可视化集合的大小最初为5): 通过父级的可视化集合,从下到上向子级应用一些修改(更改大小()/偏移()//笔刷())。(假设底部的3个Visuals如示例所示) 从VisualCollection中删除剩余的(未更新的)SpriteVisuals(顶部剩余的2个SpriteVisuals,如示例所示) 通过API将新的SpriteVisuals添加到父ContainerVis
可视化集合的大小最初为5):
通过父级的可视化集合
,从下到上向子级应用一些修改(更改大小()
/偏移()/
/笔刷()
)。(假设底部的3个Visual
s如示例所示)
从VisualCollection
中删除剩余的(未更新的)SpriteVisual
s(顶部剩余的2个SpriteVisual
s,如示例所示)
通过API将新的SpriteVisual
s添加到父ContainerVisual
该文档提供了VisualCollection.First()
API,以获取对VisualCollection
的访问权限,但没有列出任何关于在迭代过程中修改集合时,IIterator
可能如何操作的指导原则。我假定同一个迭代器失效警告适用于任何规则的C++容器。
那么,我们如何按照上述方式修改VisualCollection
?我有这个修改的代码(我认为它与
范式中的不太适合)
size\u t idx=0;
for(auto-const&child:primaryVisual.Children()){//primaryVisual是父容器
if(idx
现在如何删除剩余的
primaryVisual.Children().Count()-updateCount
childSpriteVisual
s?我正在为WinRT
使用C++/WinRT
语言投影。我需要解决方案能够跨UWP和WinUI进行扩展。Windows.UI下没有此类api。Composition命名空间可以通过索引直接删除visual。您可以将每个视频录制到列表集合中。更改视觉效果时,您可以迭代parent.Children和List,如果某个项匹配,这表明它没有更改,则可以从parent.Children和List中删除此视觉效果。请注意,在通过InsertAtTop()方法添加visual时,还需要将visual添加到列表中。
size_t idx = 0;
for (auto const& child : primaryVisual.Children()) { //primaryVisual is the parent ContainerVisual
if (idx < updateCount) { //updateCount is the number of Visuals to be updated
auto& spriteChild{ child.as<uxp_winrt::UI::Composition::SpriteVisual>() };
spriteChild.Size(uxp_winrt::Numerics::float2{width. height }); //width, height are the new sizes
spriteChild.Offset(uxp_winrt::Numerics::float3{ left, top, 0 }); //left, top are the new offsets
idx++;
}
else {
break;
}
}