C# 打开图片并设置为背景
1、界面设计
<Window x:Class="WpfApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp"
Icon="https://demosc.chinaz.net/Files/pic/iconsico/8254/e9.ico"
mc:Ignorable="d"
Title="TestImage" Height="600" Width="900" WindowStartupLocation="CenterScreen">
<Grid x:Name="myGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button x:Name="btn1" Grid.Column="1" Grid.Row="0" Background="Aqua" Width="60" Height="30" Click="Btn1_Click">背景图片</Button>
<Button x:Name="btn2" Grid.Column="0" Grid.Row="0" Background="Aqua" Width="60" Height="30" Click="Btn2_Click">打开图片</Button>
<!--<Frame Source="https://www.bilibili.com/" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3" Grid.RowSpan="3" Background="AntiqueWhite"></Frame>-->
</Grid>
</Window>
2、C#代码
using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Forms;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Windows.Controls;
namespace WpfApp
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
private int num = 0;
public MainWindow()
{
InitializeComponent();
}
private void Btn2_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog pic = new OpenFileDialog();
pic.Title = "打开图片文件";
pic.Filter = "图形文件(*.png;*.jpg)|*.png;*.jpg";
pic.Multiselect = true;
pic.DefaultExt = ".png";
if (pic.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Console.WriteLine(pic);
Console.WriteLine(pic.FileNames);
for(int i =0; i < 3; i++)
{
try
{
for(int j = 0; j < 3; j++)
{
ImageBrush p = new ImageBrush();
p.ImageSource = new BitmapImage(new Uri(pic.FileNames[num], UriKind.Absolute));
Console.WriteLine((pic.FileNames[num]));
Rectangle r = new Rectangle();
Grid.SetColumn(r, j);
Grid.SetRow(r, i+1);
r.Fill = p;
myGrid.Children.Add(r);
num++;
}
}
catch (Exception)
{
break;
}
}
}
}
private void Btn1_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog c = new OpenFileDialog();
c.Title = "背景图片";
c.Filter = "图形文件(*.jpg)|*.jpg";
if (c.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
ImageBrush p = new ImageBrush(new BitmapImage(new Uri(c.FileName, UriKind.Absolute)));
myGrid.Background = p;
}
}
}
}
3、演示
a.点击背景图片,设置背景
b.点击打开图片,浏览图片
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!