C# - 将对象转换为画笔 (WPF)

标签 c# .net wpf image brush

我正在尝试使用 MenuItem.Icon [通过 MenuItem 控件] 设置主窗口的背景。问题是 MenuItem.Icon 是一个对象,而 Mainwindow.Background 是一个Brush(或 Brush Control)类型。 有没有办法在这两者之间进行转换?我试过 BrushConverter.ConvertFrom,但它无法转换 Image 对象(这是显示的异常消息)。谢谢!下面是一些 XAML 代码:

<MenuItem Header="Waterfall" Click="BackgroundMenuItem_Click">
                            <MenuItem.Icon>
                                <Image Source="images/backgrounds/Waterfall.jpg"/>
                            </MenuItem.Icon>
                        </MenuItem>

下面是代码:

//switch background:
//event
private void BackgroundMenuItem_Click(object sender, RoutedEventArgs e)
{
    try
    {
        BackgroundMenuItem_Switch((MenuItem)sender, e);
    }
    catch(Exception exc)
    { MessageBox.Show(exc.Message); }
}
//switch func
private void BackgroundMenuItem_Switch(MenuItem sender, RoutedEventArgs e)
{
    var converter = new BrushConverter();
    var brush = converter.ConvertFrom(sender.Icon);
    this.Background = (Brush)brush;
}

最佳答案

您可以创建一个 ImageBrush从你的形象。

private void BackgroundMenuItem_Switch(MenuItem sender, RoutedEventArgs e)
{
    this.Background = new ImageBrush(((Image)(sender.Icon)).Source);
}

关于C# - 将对象转换为画笔 (WPF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41850881/

相关文章:

c# - 扩展方法重载选择

c# - 在视口(viewport)中查找 WPF 控件

javascript - HttpClient PostAsync 在 JQuery 中等效于 FormURLEncodedContent 而不是 JSON

c# - 如何使用 WebAPI、WCF、SignalR 和后台任务在 MVC Web 应用程序中配置简单的注入(inject)器容器和生活方式

c# - StreamReader.EndOfStream 缺少最后一行?

c# - Microsoft.Expression.Drawing.Aero 丢失(这是什么?!)

wpf - 如何确保WPF数据网格的当前项可见?

c# - 如何使用 Xamarin 在 Android 应用程序中添加联系信息

c# - 如何在 Xamarin.Forms 页面中将按钮作为 CommandParameter 从 XAML 传递?

.net - 如何查明当前方法是否带有 IsOneWay 标记