You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实例化SolidColorBrush时出现Color类型无法互转问题如何解决

错误原因

这个报错本质是命名空间冲突导致的类型不匹配:你代码里用到了两个不同命名空间下的同名Color类型,两者没有继承关系,无法直接转换。

  • 你调用Color.FromArgb()时默认引用的是System.Drawing.Color类型,该类型属于WinForms/GDI+体系
  • SolidColorBrush构造函数要求的入参是System.Windows.Media.Color类型,属于WPF体系,两者即使名称完全一致,也属于完全独立的类型
修复方案

方案1:直接使用WPF体系的Color生成颜色

在代码中显式指定调用WPF的Color类即可,避免命名空间混淆:

' 优先引用System.Windows.Media命名空间,或者直接写全限定名
x = System.Windows.Media.Color.FromArgb(<some integer>)

Dim Cell As New Shapes.Rectangle With
{
    .Fill = New SolidColorBrush(x),
    ' 其余属性
}

方案2:手动转换已有System.Drawing.Color对象

如果你有必须使用System.Drawing.Color的场景,可以手动提取ARGB分量转换为WPF的Color类型:

Dim drawingColor As System.Drawing.Color = System.Drawing.Color.FromArgb(<some integer>)
Dim wpfColor As System.Windows.Media.Color = System.Windows.Media.Color.FromArgb(drawingColor.A, drawingColor.R, drawingColor.G, drawingColor.B)

Dim Cell As New Shapes.Rectangle With
{
    .Fill = New SolidColorBrush(wpfColor),
    ' 其余属性
}

内容的提问来源于stack exchange,提问作者SezMe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:18:01