我有以下内容GradientStopCollection:
GradientStopCollection grsc = new GradientStopCollection(3);
grsc.Add(new GradientStop(Colors.Red, 0));
grsc.Add(new GradientStop(Colors.Yellow, .5));
grsc.Add(new GradientStop(Colors.Green, 1));
Run Code Online (Sandbox Code Playgroud)
我可以在特定的"位置"获得颜色吗?例如:
Yellow<~>GreenWPF/某些第三方库中是否有API 可以做到这一点?
我正在研究项目,我必须使用C#做一些颜色选择器.
所以我决定它将成为Win Forms App中具有此背景的Panel.
背景应该具有rgb中的三种颜色的渐变:红色(0 - 255),蓝色(0 - 255)和绿色= 0.

但我找不到任何有关我应该用于此的信息.
我试着写一些代码,这就是我所做的.
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
panel1.Paint += new PaintEventHandler(panel1_Paint);
panel1.Refresh();
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
Point startPoint = new Point(0, 0);
Point endPoint = new Point(150, 150);
LinearGradientBrush lgb =
new LinearGradientBrush(startPoint, endPoint, Color.FromArgb(255, 255, 0, 0), Color.FromArgb(255, 255, 255, 0));
Graphics g = e.Graphics;
g.FillRectangle(lgb, 0, 0, 150, 150); …Run Code Online (Sandbox Code Playgroud) 我有一个按钮,我用LinearGradientBrush设置按钮背景样式.一切正常,但当我运行按钮,然后按下按钮,然后渐变颜色显示ob按钮与动画的位,但我没有为按钮背景样式的动画写任何东西.
这是我的完整代码
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<DockPanel>
<Button Content="Button" Height="23" Name="button1" Width="75">
<Button.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="#FFD9EDFF" Offset="0"/>
<GradientStop Color="#FFC0DEFF" Offset="0.445"/>
<GradientStop Color="#FFAFD1F8" Offset="0.53"/>
</LinearGradientBrush>
</Button.Background>
</Button>
</DockPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
我希望当用户点击按钮然后渐变动画时,任何事情都不会在按钮上启动.请指导我.谢谢
给定LinearGradientBrush如下定义:
<LinearGradientBrush x:Key="RedYellowGradient">
<GradientStop Color="Blue" Offset="0.01" />
<GradientStop Color="Purple" Offset="0.25"/>
<GradientStop Color="Red" Offset="0.5"/>
<GradientStop Color="Orange" Offset="0.75"/>
<GradientStop Color="Yellow" Offset="1.0"/>
</LinearGradientBrush>
Run Code Online (Sandbox Code Playgroud)
什么是需要采取的定义,并确定由特定的一个偏移表示的颜色,如0.13或0.82勿使任何可见?
这将采用具有这样的原型的函数的形式:
Function GetColorFromBrushOffset(br as LinearGradientBrush, offset as Single) as SomeColorDataStructure
Run Code Online (Sandbox Code Playgroud)
在函数体中需要做什么?我不是在寻找完成的代码(虽然我不会拒绝它!)只是关于使用什么数据结构和系统调用的一些想法.
我正在尝试使用LinearGradientBrush绘制我的WPF窗口的背景,但是我的代码不起作用.这是代码
LinearGradientBrush gradientBrush = new LinearGradientBrush( Color.FromArgb(0, 209, 227, 250), Color.FromArgb(0, 170, 199, 238), new Point(0.5, 0), new Point(0.5, 1));
Background = gradientBrush;
Run Code Online (Sandbox Code Playgroud)
不幸的是,我的窗户仍然是白色的.是否可以使用后面的代码更改窗口的背景颜色?
我想知道如何将Storyboard.TargetProperty设置为LinearGradientBrush而不是纯色.我是VisualStates的新手,所以如果我的问题没有提供足够的信息,请告诉我.大多数情况下,我只想设置渐变而不是纯色,无法弄清楚如何.谢谢你的帮助.我的工作是在http://msdn.microsoft.com/en-us/library/ms753328.aspx上找到的一个例子.
<VisualState x:Name="Disabled">
<Storyboard>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).
(GradientBrush.GradientStops)[1].(GradientStop.Color)"
Storyboard.TargetName="Border">
<EasingColorKeyFrame KeyTime="0"
Value="{StaticResource DisabledControlDarkColor}" />
</ColorAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames
Storyboard.TargetProperty="(TextBlock.Foreground).(SolidColorBrush.Color)"
Storyboard.TargetName="Border">
<EasingColorKeyFrame KeyTime="0"
Value="{StaticResource DisabledForegroundColor}" />
</ColorAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).
(GradientBrush.GradientStops)[1].(GradientStop.Color)"
Storyboard.TargetName="Border">
<EasingColorKeyFrame KeyTime="0"
Value="{StaticResource DisabledBorderDarkColor}" />
</ColorAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
Run Code Online (Sandbox Code Playgroud) 我有一个LinearGradientBrush定义如下.我想在我的xaml中使用它,但我想在这种特殊情况下改变不透明度(仅在这种情况下,不是我使用它的任何地方).任何想法如何实现这一目标?
<LinearGradientBrush x:Key="BlueBackgroundBrush" EndPoint="0.874,1.197" StartPoint="0.126,-0.197">
<GradientStop Color="#1954B2" />
<GradientStop Color="#1954B2" Offset="0.982" />
<GradientStop Color="#FF84B2D4" Offset="0.304" />
</LinearGradientBrush>
Run Code Online (Sandbox Code Playgroud) 我试图使用数据触发器在边框上设置线性画笔动画但是遇到了无法使用TargetName的问题
我的代码如下,任何人都可以建议一种解决方法吗?
<Border Grid.Row="2" BorderThickness="10" Height="100" Width="100" >
<Border.BorderBrush>
<LinearGradientBrush>
<GradientStop Color="Yellow" Offset="0.0" />
<GradientStop x:Name="gradient" Color="Orange" Offset="0.5" />
<GradientStop Color="Yellow" Offset="1.0" />
</LinearGradientBrush>
</Border.BorderBrush>
<Border.Resources>
<Style TargetType="Border">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=testBrdrWin, Path=Pulse}" Value="true">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="gradient"
Storyboard.TargetProperty="Offset"
From="0" To="1" Duration="0:0:1"
AutoReverse="True" RepeatBehavior="Forever"
/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=testBrdrWin, Path=Pulse}" Value="true">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="gradient"
Storyboard.TargetProperty="Offset"
To="0.5" Duration="0:0:01"
AutoReverse="False"
/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Resources>
</Border>
Run Code Online (Sandbox Code Playgroud)
谢谢
我需要一个Ellipse从底部(粉红色)到顶部(红色)的线性渐变.
<Ellipse Width="200" Height="200">
<Ellipse.Fill>
<LinearGradientBrush StartPoint="0,1" EndPoint="1,0" >
<GradientStop Color="Pink" Offset="0" />
<GradientStop Color="Red" Offset="1" />
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
Run Code Online (Sandbox Code Playgroud)
上面的代码显示了从左下到右上的渐变.
我需要渐变从左中间移动到顶部中间.
我尝试改变起点和终点但没有成功.还有其他可以使用的财产吗?
它必须是椭圆上的线性渐变.我不能在这里使用径向渐变.
我想通过图形框架类在屏幕上绘制1位数字.我希望'1'的填充方法类似于
所需的梯度http://qt-project.org/doc/qt-5.0/qtgui/images/qpainterpath-addtext.png
但是我画的'1'的画笔就像下面代码的黄色SolidBrush(丑陋的黄色'1').你能帮我解决它有什么问题吗?
QGraphicsSimpleTextItem digit_1 = new QGraphicsSimpleTextItem;
digit_1->setText(QString::number(1));
digit_1->setPen(QPen(QColor("black")));
QLinearGradient gradient(digit_1->boundingRect().topLeft(),
digit_1->boundingRect().bottomRight());
gradient.setColorAt(0, Qt::white);
gradient.setColorAt(1, Qt::yellow); // yellow is for example
QBrush brush(gradient);
brush.setStyle(Qt::BrushStyle::LinearGradientPattern);
digit_1->setBrush(brush);
digit_1->setFont(QFont("courier", 35, QFont::Black));
Run Code Online (Sandbox Code Playgroud)
提前致谢.
wpf ×7
c# ×3
xaml ×3
storyboard ×2
.net ×1
animation ×1
brush ×1
brushes ×1
button ×1
color-picker ×1
colors ×1
datatrigger ×1
drawing ×1
qt ×1
winforms ×1