实例化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
相关产品推荐
相关产品推荐

