【问题标题】:How to implement a conical/cone/circular gradient in WPF如何在 WPF 中实现圆锥/圆锥/圆形渐变
【发布时间】:2010-02-02 12:56:24
【问题描述】:

我想在 WPF 中重新创建锥形/圆形渐变。我研究过继承 System.Windows.Media.GradientBrush - 可以继承自 - 但使用大量内部管道来完成工作(继承自 System.Windows.Media.Brush)

任何关于如何实现这一点的想法都将不胜感激(最好不求助于位图)

干杯。

丹

这个问题在 7 月的某个时候被问到 (Circular Gradient and WPF),但我不想重复一个老问题。

【问题讨论】:

  • 重新提出问题的问题在于它可能会作为重复项而被关闭。不幸的是,作为新用户,您无法访问解决原始问题所需的工具,因此我无法提供解决方案。

标签: c# .net wpf gradient


【解决方案1】:

您可以创建自定义效果。我建议下载Shazzam,您还需要 DirectX SDK。给元素一个水平渐变,然后应用效果将其转换为锥形渐变。

/// <class>AngleGradient</class>
/// <description>Renders an angle gradient.</description>
//-----------------------------------------------------------------------------------------
// Shader constant register mappings (scalars - float, double, Point, Color, Point3D, etc.)
//-----------------------------------------------------------------------------------------
/// <summary>The centre of the gradient.</summary>
/// <minValue>0</minValue>
/// <maxValue>1</maxValue>
/// <defaultValue>0.5,0.5</defaultValue>
float2 Centre : register(C0);

/// <summary>The start angle.</summary>
/// <minValue>0</minValue>
/// <maxValue>1</maxValue>
/// <defaultValue>0</defaultValue>
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));

【讨论】:

    猜你喜欢
    • 2023-01-30
    • 2021-09-20
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    相关资源
    最近更新 更多