Ich habe ein Rechteck:Machen UIElement sichtbar nur unter SpotLight
<Border x:Name="Elem1" BorderThickness="2" Height="100" Width="200" BorderBrush="Red" />
Und ein Windows.UI.Composition. SpotLight togehter mit Zeiger bewegen:
const float LightDistance = 20;
_compositor = Window.Current.Compositor;
_pointLight = _compositor.CreatePointLight();
_pointLight.Color = Colors.White;
_pointLight.Targets.Add(ElementCompositionPreview.GetElementVisual(Elem1));
PointerMoved += (o, e) => {
var point = e.GetCurrentPoint(this).Position;
_pointLight.Offset = new Vector3((float)point.X, (float)point.Y, LightDistance);
};
Wenn kein Licht über Rectagle ist es schwarz bleiben:
ich den Rest des Rechtecks transparent sein möchte, so nur erleuchteter Teil wird sichtbar sein
Ich habe versucht, transparent AmblientLight hinzuzufügen, aber der Aplha-Kanal ist ich gnored.
Ich denke, es könnte von SceneLightingEffect
erreicht werden, aber wie? :)
können Sie Maske anstelle von Spotlight verwenden, wenn es für Ihren Fall –
Ich versuchte auch dies, aber war nicht erfolgreich. Nicht weil es uns unmöglich ist, aber aufgrund meiner begrenzten Kenntnisse von uwp weiß ich nicht, wie man eine radiale Gradientenmaske erzeugt und bewegt – Liero