问题标签 [solidcolorbrush]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
62 浏览

c# - 如何从第三方 SolidColorBrush 资源中提取颜色

我有一个由第 3 方定义的名为“资源”的 DynamicResource。它引用了一个 SolidColorBrush 并且它的颜色会根据某些事情发生变化。

我需要创建一个以“资源”的当前颜色开头的颜色动画,但我不知道如何从 xaml 中的资源中提取颜色并在 ColorAnimation 中使用它。

如果不使用后面的代码,这是否可能?

0 投票
0 回答
301 浏览

c# - 在 wpf 中将 System.Windows.Media.SolidColorBrush 转换为 Excel.Range.Interior.Color

我想在 wpf 中将 System.Windows.Media.SolidColorBrush 转换为 Excel.Range.Interior.Color。我怎样才能做到这一点?

0 投票
2 回答
496 浏览

c# - 为什么 Canvas 的 Background 属性是通用的“SolidColorBrush”而不是实际颜色?

我想响应画布上的点击并将画布背景的值存储在应用程序设置中,以便我可以将该值分配给 AppBar / 命令栏。所以我在用户控件中有这个 XAML:

..处理程序是:

然而,brushColorAsStr 的值只是“Windows.UI.XAML.Media.SolidColorBrush”(我希望它类似于“Magenta”或“Windows.UI.XAML.Media.SolidColorBrush.Magenta”)

如何获得背景的实际值而不仅仅是它的类型?

更新

我不明白如何实现 SLaks 的答案;我试过了:

0 投票
2 回答
769 浏览

c# - 如何将十六进制颜色值转换为其人类可读的字符串表示形式?

我想将颜色十六进制值(例如“#FFFF1493”)存储为其“人性化”名称(例如“DeepPink”)。

在 SLaks 和 nvoigt here的帮助下,我现在得到了以下代码:

...但是 BrushColorAsStr 中的值是“ #FFFF1493 ”(当我单击 DeepPink 画布控件时),这不适用于我的代码根据所选颜色更改应用栏颜色:

这里我得到了这些建议:

...但是“ ColorConverter ”和“ Drawing ”在我的应用程序中无法解析。如何从十六进制颜色值中获得人类可读的名称?

0 投票
2 回答
8806 浏览

c# - 如何在 C# 中将字符串转换为 SolidColorBrush?

我正在尝试在 C# 中将a 转换string为 a 。SolidColorBrush我正在使用的代码是:

其中 sLine 是从文本文件中读取的字符串。例如,sLine可能是“黑色”。

这段代码给了我一个FormatException.

0 投票
1 回答
564 浏览

c# - SolidBrush.Clone 抛出异常

我正在使用不同类型的画笔,如SolidBrushHatchBrush等,在我的 Windows 窗体控件中绘制复杂的形状和文本。我正在使用的代码是,

有时,线路myBrush.Clone()抛出ArgumentException. 我在 MSDN 链接中搜索了 SolidBrush.Clone() 方法,但没有关于任何异常 SolidBrush.Clone的信息

所以,我在下面的 SolidBrush 类参考代码链接中检查了这个方法的源代码

方法中使用的代码System.Drawing.SolidBrush.Clone

很明显,该Clone方法可能会抛出异常,但我无法确定它何时或为什么会抛出异常,因为这段代码不是我的。

有谁知道这种方法何时或为什么会抛出异常?

编辑:

附上显示异常详细信息的图像

异常图像

另外,这不是系统刷,因为immutable刷的属性是false

不是系统刷

0 投票
2 回答
1060 浏览

wpf - 来自现有颜色的新颜色,在 xaml 中进行重命名/复制/别名

我正在尝试遵循 XAML 中的 Don't Repeat Yourself 原则,但我已经到了苦苦挣扎的地步。

我正在为蒙皮定义颜色。假设我已经定义了我想要作为皮肤基础的颜色:

现在说我想使用颜色 B 作为我的边框颜色,我会为我的文本框、按钮等设置 BorderBrush 的样式:

现在假设我想使用较暗的色调 B-,因此我宁愿使用 B 中的另一种名为“占位符”的颜色,而不是(记住)更改所有控件的资源,所以我只必须更改一次:

我不知道如何做到这一点。在 XAML 中是否存在定义“常量”的通用“模式”或方式?


解决方法

不可能按照我想要的方式,请参阅答案。

简短的解决方法(感谢@dotsven 处理亮度的巧妙技巧):将所有颜色定义为画笔,并使用标记扩展来检索Color属性。

AFAIKColor不支持它的内容分配,因此如果不单独对 A、R、G、B 等属性进行操作,XAML 就没有简单的方法来定义或绑定它。笔刷在这里起到了包装的作用,因此我们可以绑定到颜色。

将所有颜色定义为Brushes

创建一个 MarkupExtension 以Color从以下位置检索SolidColorBrush

然后通过亮度偏移创建我的蒙皮颜色,如下所示:

当控件需要画笔时,例如Background,只需绑定到{StaticResource controlBackground}

如果您必须绑定到需要 a 的东西Color,请绑定到{ext:SkinColor BaseColor={StaticResource controlBackground}}以从画笔中检索它。

0 投票
0 回答
603 浏览

c# - WPF SolidColorBrush 颜色叠加(混合颜色)

我试图找到一种简单的方法来通过添加透明覆盖颜色来更改现有 SolidColorBrush 的颜色。这可能没有

  • 使用着色器效果,或
  • 使用覆盖颜色将重复控件放在顶部?

有人告诉我,这必须在 Windows 上是可能的。Web 开发人员一直在使用这种技术,这就是他们与设计师交流的方式。他们有几个设计的关键颜色,他们没有明确定义每个关键颜色的阴影——而是说“添加 10% 的黑色”。我知道这可以在 CSS 中轻松完成,您不必担心确切的 RGB 值,您所需要定义的只是与 10% 透明黑色混合。我正在为 WPF 寻找类似的东西,在那里我可以轻松地修改我现有的颜色,而无需太多额外的麻烦(例如,使画笔变暗 10%,就好像它上面有一个 10% 的黑色对象一样。)

我不是在寻找叠加层的数学计算,我知道这是可以做到的。我正在寻找一种在 WPF 中实现此目的的简单方法 - 类似于 CSS,您可以在其中简单地定义叠加颜色以进行混合。我想知道这是否可能 - 在 WPF 中。

0 投票
2 回答
4941 浏览

c# - 如何在c#中更改笔的颜色?

我正在尝试更改钢笔和实心画笔的颜色。

我对它们进行了硬编码,但现在我想知道如何只制作一支笔并使用 GUI(下拉列表、调色板等)将颜色更改为我想要的任何颜色。

这是我的编码:

0 投票
1 回答
251 浏览

c# - 尝试将 SolidColorBrush 资源应用于 HeaderedContentControl BorderBrush

我想将我的窗口中的 SolidColorBrush 链接到我的字典中的另一个 SolidColorBrush。我没有找到这样的东西,可能是不可能的......

这是我的“ResourceDictionary.xaml”中的代码

在我的窗口中,我想要一个指向此资源的链接,如下所示:

目前,此代码不起作用...

我想使用这个链接,因为我想在我的页面中以多个“”使用这个资源,如果将来必须改变颜色,用这种方式很容易改变。

Brush 资源的使用方式如下: