10
votes

Comment créer un cercle avec un trou dans un cercle dans WPF?

J'ai créé un usercontrol qui est une bague en superposant 2 cercles le petit cercle étant vide et le second derrière le plus petit être coloré.

dans mon application WPF, je veux mettre plusieurs anneaux mais le petit cercle se cache autres bagues. J'aimerais voir à travers elle et capturer également l'événement de la souris pour l'anneau derrière d'autres anneaux sinon ce n'est pas de vraies bagues. Est-ce possible?

J'ai essayé de l'opacitémask pour une petite ellipse comme indiqué par réponse à http://social.msdn.microsoft.com/forums/en-us/wpf/thread/551201D1-C5B3-4E17-AE63-625CFBB8BCC4 mais je ne peux toujours pas voir l'anneau derrière le trou: xxx

entrez Description de l'image ici


0 commentaires

3 Réponses :


10
votes

Vous pouvez simplement créer un cercle avec un arrière-plan transparent et un strokethickness code> dans UserControl.

<Ellipse Width="50" Height="50" StrokeThickness="10" Fill="Transparent">
    <Ellipse.Stroke>
        <LinearGradientBrush>
            <GradientStop Offset="0" Color="Red"/>
            <GradientStop Offset="1" Color="Green"/>
        </LinearGradientBrush>
    </Ellipse.Stroke>
</Ellipse>


1 commentaires

J'ai essayé que le problème est que ce n'est plus une bague depuis que je peux voir le grand cercle derrière :) Je veux qu'un deuxième cercle applique un gradient à celui-ci, une grande frontière ne peut pas faire cela aussi loin que je peux prévoir.



0
votes

Découvrez ce Comment Pour créer un beignet avec un centre transparent? .

code avec chemin et bouton sous celui-ci: xxx


2 commentaires

Qu'est-ce qui ne fonctionne exactement pas, j'ai essayé d'exécuter le code posté (exemple de chemin) avec le bouton sous celui-ci.


Ok, ça marche une bonne réponse, mais existe-t-il un moyen de travailler avec cercle et non chemin car j'ai besoin de redimensionner automatiquement pas facile avec le chemin. Alors va essayer l'autre solutio ci-dessous.



13
votes

On dirait que vous avez déjà trouvé votre réponse (il y a quelques années), mais pour que quiconque cherche à le faire, vous voudrez peut-être consulter la compositegetométrie:

http://msdn.microsoft.com/en-us/library/ms751808.aspx#combindgeométriessection

tel que: xxx

puis ishittestvisible = "false" devrait empêcher les interférences de la souris, en cas de besoin.


2 commentaires

Il est possible de s'étirer et de centrer le chemin dans son parent?


C'est une belle réponse.