如何将首个布局中的第一张图片复制并显示至另一布局?
实现第一个布局图片复制到另一个布局显示的方法
核心思路
WPF中图片控件的Source属性是ImageSource类型,可直接在不同控件间复用;若需要独立副本(原图片修改不影响目标),则对图片源进行克隆处理。
具体步骤
确认控件存在
- 原布局窗口中,确保要复制的图片控件已命名(比如
ImgCar1)。 - 在目标窗口
CarDisplay的XAML中添加图片控件,命名为ImgCarDisplay(示例:<Image x:Name="ImgCarDisplay" Width="200" Height="150"/>)。
- 原布局窗口中,确保要复制的图片控件已命名(比如
传递图片源
根据需求选择以下两种方式:
方式一:直接复用图片源(原图片变化会同步到目标)
修改按钮点击事件代码,添加图片传递逻辑:
private void BtnCar1_Click(object sender, RoutedEventArgs e) { CarDisplay cardisplay = new CarDisplay(); // 传递车辆文本信息 cardisplay.LblCarName1.Content = "HONDA XCX 2014V"; cardisplay.FuelType.Content = "CRUDE"; cardisplay.NoOfCylinder.Content = "5"; cardisplay.TransmissionType.Content = "AUTOMATIC"; cardisplay.SeatingCapacity.Content = "6"; cardisplay.Price.Content = "P800,000"; // 传递图片源 cardisplay.ImgCarDisplay.Source = ImgCar1.Source; cardisplay.Show(); }
方式二:创建独立图片副本(原图片变化不影响目标)
如果需要完全独立的图片副本,可对BitmapImage进行克隆:
private void BtnCar1_Click(object sender, RoutedEventArgs e) { CarDisplay cardisplay = new CarDisplay(); // 传递车辆文本信息 cardisplay.LblCarName1.Content = "HONDA XCX 2014V"; cardisplay.FuelType.Content = "CRUDE"; cardisplay.NoOfCylinder.Content = "5"; cardisplay.TransmissionType.Content = "AUTOMATIC"; cardisplay.SeatingCapacity.Content = "6"; cardisplay.Price.Content = "P800,000"; // 创建独立图片副本 if (ImgCar1.Source is BitmapImage originalBitmap) { BitmapImage clonedBitmap = new BitmapImage(); clonedBitmap.BeginInit(); clonedBitmap.UriSource = originalBitmap.UriSource; clonedBitmap.CacheOption = BitmapCacheOption.OnLoad; clonedBitmap.EndInit(); cardisplay.ImgCarDisplay.Source = clonedBitmap; } cardisplay.Show(); }
注意事项
- 若原图片是本地文件,确保目标窗口有权限访问该文件路径;
- 如果图片是来自网络流或内存流,克隆时需确保流未被关闭,或重新读取流内容。
内容的提问来源于stack exchange,提问作者Jerry Reloz
相关产品推荐
相关产品推荐

