为什么不能用儿童克隆网格?

时间:2018-11-30 15:11:09

标签: wpf clone

为什么不能与儿童网格克隆?在Grid1 = Markup.XamlReader.Load(xmlReader)行上发生以下错误:

  

System.Windows.Markup.XamlParseException:没有匹配的构造函数   在System.Windows.Media.Imaging.WriteableBitmap类型上找到。

需要更改什么?

Private Sub pelespausti(sender As Object, e As MouseButtonEventArgs) Handles Grid1.MouseDown
    If e.LeftButton = MouseButtonState.Pressed Then
        If im IsNot Nothing Then
            If e.GetPosition(im).X >= im.Margin.Left AndAlso e.GetPosition(im).X < im.ActualWidth AndAlso
            e.GetPosition(im).Y >= im.Margin.Top AndAlso e.GetPosition(im).Y < im.ActualHeight Then
                'CType(bi.PixelWidth / 8, Integer)
                Dim pix As PixelFormat = PixelFormats.Rgba64
                Array.Resize(Of Byte)(pixels2, bi.PixelWidth * bi.PixelHeight * Math.Ceiling(pix.BitsPerPixel / 8))

                colors = New List(Of System.Windows.Media.Color) From {System.Windows.Media.Colors.Transparent}
                palete = New BitmapPalette(colors)
                bi2 = BitmapSource.Create(bi.PixelWidth, bi.PixelHeight, 96, 96, pix, palete, pixels2, Math.Ceiling(bi.PixelWidth * pix.BitsPerPixel / 8))

                o = New FormatConvertedBitmap(bi2, pix, palete, 100)
                o2 = New FormatConvertedBitmap(bi, o.Format, palete, 100)
                Dim pixelsp(Math.Ceiling(o2.Format.BitsPerPixel / 8)) As Byte
                Dim pixelsp2(Math.Ceiling(o2.Format.BitsPerPixel / 8)) As Byte
                o2.CopyPixels(New Int32Rect(e.GetPosition(im).X, e.GetPosition(im).Y, 1, 1), pixelsp, Math.Ceiling(o2.Format.BitsPerPixel / 8), 0) 'klaida

                ras = New WriteableBitmap(o)
                'Me.Title = Color.FromArgb(pixelsp(0), pixelsp(1), pixelsp(2), pixelsp(3)).R
                Dim m As Boolean = True
                For x = 0 To o2.PixelWidth - 1
                    For y = 0 To o2.PixelHeight - 1
                        o2.CopyPixels(New Int32Rect(x, y, 1, 1), pixelsp2, Math.Ceiling(o2.Format.BitsPerPixel / 8), 0)
                        For k = 0 To pixelsp.GetUpperBound(0)
                            If Not pixelsp(k) = pixelsp2(k) Then
                                m = False : Exit For
                            End If
                        Next
                        If m = True Then
                            ras.WritePixels(New Int32Rect(x, y, 1, 1), pixelsp2, Math.Ceiling(o.Format.BitsPerPixel / 8), 0)
                        Else
                            m = True
                        End If
                    Next
                Next
                im.Source = ras

                Me.Title = "komp"
            End If
        End If
        Dim objXaml As String = Markup.XamlWriter.Save(Grid1)
        Dim StringReader As StringReader = New StringReader(objXaml)
        Dim xmlReader As Xml.XmlReader = Xml.XmlReader.Create(StringReader)
        Grid1 = Markup.XamlReader.Load(xmlReader)'here exception
        End If
End Sub

0 个答案:

没有答案