0

我想将 imageSource 复制到另一个 imageSource。当A窗口包含图像关闭时,我想将A中的图像复制到B窗口图像然后打开B窗口。

我试图用下面的代码进行测试。但这行不通。

添加:我上传了更多关于相关图像代码的代码。但我m sorry that i can不会上传完整的源代码,但如果你问,我会编辑相关的源代码并上传。

   A a = new A();
   B b;
   a.Closing += delegate {
                    b = new B();
                    b.img.Source = a.img.Source;
                    b.Show();
   };
   a.Show();
<!-- a.img xml -->
<Grid x:Name="ImageGrid" Margin="0,36,10,10">
            <Grid.LayoutTransform>
                <TransformGroup>
                    <ScaleTransform x:Name="ScaleTransform"
                                        ScaleX="{Binding ZoomRate}" ScaleY="{Binding ZoomRate}"/>
                    <RotateTransform/>
                </TransformGroup>
            </Grid.LayoutTransform>
            <Image Name="img" HorizontalAlignment="Left" VerticalAlignment="Top"
                       Source="{Binding BitmapSource, Mode=TwoWay}"/>
            <Canvas HorizontalAlignment="Left" VerticalAlignment="Top"
                        Name="canvas2"
                        Background="Transparent"
                        Width="{Binding Path=ActualWidth, ElementName=imgBefore2}"
                        Height="{Binding Path=ActualHeight, ElementName=imgBefore2}"

                        MouseLeftButtonDown="Canvas2_MouseLeftButtonDown"
                        MouseMove="Canvas2_MouseMove"
                        MouseLeftButtonUp="Canvas2_MouseLeftButtonUp"
                        MouseRightButtonDown="Canvas2_MouseRightButtonDown">
            </Canvas>
        </Grid>

<!-- b.img xml -->
<Grid x:Name="ImageGrid"
                        Background="Transparent"
                        Width="{Binding MaxWidth, ElementName=ScrollViewer}"
                        Height="{Binding MaxHeight, ElementName=ScrollViewer}"
                        MouseMove="Canvas_MouseMove"
                        MouseLeftButtonDown="Canvas_MouseLeftButtonDown"
                        MouseLeftButtonUp="Canvas_MouseLeftButtonUp"
                        MouseWheel="Canvas_MouseWheel">
                    <Grid.LayoutTransform>
                        <TransformGroup>
                            <ScaleTransform x:Name="ScaleTransform" ScaleX="{Binding ZoomRate}" ScaleY="{Binding ZoomRate}"/>
                            <RotateTransform/>
                        </TransformGroup>
                    </Grid.LayoutTransform>
                    <Image x:Name="img" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                    <Canvas HorizontalAlignment="Left" VerticalAlignment="Top"
                            x:Name="canvas"
                            Background="Transparent"
                            Width="{Binding ActualWidth, ElementName=imgBefore}"
                            Height="{Binding ActualHeight, ElementName=imgBefore}"/>
                </Grid>

public Mat src;
public BitmapSource BitmapSource {
            get
            {   
                return bitmapSource;
            }
            set
            {
                bitmapSource = value;
                OnPropertyChanged("bitmapSource");
            } // ViewModel Code
}

private void LoadImage(System.Drawing.Bitmap bm)
{
  src = OpenCvSharp.Extensions.BitmapConverter.ToMat(bm);
  OriginWidth = src.Width;
  OriginHeight = src.Height;
  BitmapSource = OpenCvSharp.Extensions.BitmapSourceConverter.ToBitmapSource(src);
} // Load Image for a.img
4

0 回答 0