Wie erstellen Sie einen Kreis mit einem Loch in einem Kreis in WPF?
Habe ich ein UserControl erstellt, das ist ein ring, durch überlagerung von 2 Kreisen den kleinen Kreis leer und den zweiten hinter die kleinste, farbige.
In meiner WPF-Anwendung, ich möchte mehrere Ringe, aber der kleine Kreis hat blenden Sie die anderen Ringe. Ich möchte durch Sie sehen und erfassen auch die Maus-Ereignis für ring hinter anderen Ringe sonst ist es nicht real Ringe. Ist es möglich ?
Versuchte ich OpacityMask für kleine ellipse wie bereits durch die Antwort auf http://social.msdn.microsoft.com/forums/en-US/wpf/thread/551201d1-c5b3-4e17-ae63-625cfbb8bcc4 aber immer noch nicht zu sehen-ring hinter Loch:
<UserControl x:Class="MyUserControls.MyRing"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="150" d:DesignWidth="150" SizeChanged="UserControl_SizeChanged">
<Grid Height="150" Name="Grid" Width="150" MouseMove="ellipse1_MouseMove">
<Ellipse Fill="Red" Height="150" Width="150" HorizontalAlignment="Left" Margin="0,0,0,0" Name="ellipse1" Stroke="Black" VerticalAlignment="Top" >
<Ellipse.OpacityMask>
<RadialGradientBrush>
<GradientStop Color="#FFB94444" Offset="0.496"/>
<GradientStop Color="#00FFFFFF" Offset="0.491"/>
</RadialGradientBrush>
</Ellipse.OpacityMask>
</Ellipse>
<Ellipse Fill="White" Height="100" Width="100" Margin="25,25,25,0" Name="ellipse2" Stroke="Black" VerticalAlignment="Top" />
</Grid>
</UserControl>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie Sie schon festgestellt, dass Ihre Antwort (vor ein paar Jahren), aber für jemand anderes suchen, um dies zu tun, möchten Sie vielleicht check out CompositeGeometry:
http://msdn.microsoft.com/en-us/library/ms751808.aspx#combindgeometriessection
Wie:
Dann
IsHitTestVisible="False"
soll verhindern, dass Maus-Störungen, wenn Sie benötigt wird.Sie könnte einfach erstellen Sie einen Kreis mit einem transparenten hintergrund und einem
StrokeThickness
im UserControl.BEARBEITEN:
Sie können einen Farbverlauf Pinsel, um den Strich wie auf der Abbildung. Sie ersetzen könnten die
LinearGradientBrush
mit einer anderen Art von Pinsel, wie Sie es wünschen.Schauen Sie sich dieses Wie erstellen Sie einen Ring mit einem transparenten center?.
Code mit Weg und Taste es unter: