Comment implémenter un gradient conique / cône / circulaire dans WPF

Je voudrais recréer un gradient conique / circulaire dans WPF. J’ai étudié la possibilité d’hériter de System.Windows.Media.GradientBrush – dont on peut hériter – mais qui utilise beaucoup de tuyauterie interne pour effectuer le travail (hérité de System.Windows.Media.Brush)

Toute idée sur la façon de réaliser cela serait appréciée (de préférence sans recourir à des bitmaps)

À votre santé.

Dan

Cette question avait été posée quelque temps en juillet ( Circular Gradient et WPF ) mais je ne voulais pas ressusciter une vieille question.

Vous pouvez créer un effet personnalisé. Je recommande de télécharger Shazzam, vous aurez également besoin du SDK DirectX. Donnez à l’élément un dégradé horizontal, puis appliquez l’effet pour le transformer en dégradé conique.

/// AngleGradient /// Renders an angle gradient. //----------------------------------------------------------------------------------------- // Shader constant register mappings (scalars - float, double, Point, Color, Point3D, etc.) //----------------------------------------------------------------------------------------- /// The centre of the gradient. /// 0 /// 1 /// 0.5,0.5 float2 Centre : register(C0); /// The start angle. /// 0 /// 1 /// 0 float Angle : register(C1); //-------------------------------------------------------------------------------------- // Sampler Inputs (Brushes, including ImplicitInput) //-------------------------------------------------------------------------------------- sampler1D implicitInputSampler : register(S0); static const float PI = 3.14159265f; //-------------------------------------------------------------------------------------- // Pixel Shader //-------------------------------------------------------------------------------------- float4 main(float2 uv : TEXCOORD) : COLOR { float angle = atan2(uv.y-Centre.y, uv.x-Centre.x)+PI; angle = (angle/(2*PI)) + Angle; return tex1D(implicitInputSampler,min(angle > 1 ? angle-1 : angle,0.99));