Sto provando a copiare una parte di un BitmapSource in un WritableBitmap.Copia da BitmapSource a WritableBitmap
Questo è il mio codice finora:
var bmp = image.Source as BitmapSource;
var row = new WriteableBitmap(bmp.PixelWidth, bottom - top, bmp.DpiX, bmp.DpiY, bmp.Format, bmp.Palette);
row.Lock();
bmp.CopyPixels(new Int32Rect(top, 0, bmp.PixelWidth, bottom - top), row.BackBuffer, row.PixelHeight * row.BackBufferStride, row.BackBufferStride);
row.AddDirtyRect(new Int32Rect(0, 0, row.PixelWidth, row.PixelHeight));
row.Unlock();
ottengo "ArgumentException: Valore non rientra nell'intervallo previsto." nella riga di CopyPixels
.
Ho provato a scambiare row.PixelHeight * row.BackBufferStride
con row.PixelHeight * row.PixelWidth
, ma poi ho un errore che dice che il valore è troppo basso.
Non sono riuscito a trovare un singolo esempio di codice utilizzando questo sovraccarico di CopyPixels
, quindi sto chiedendo aiuto.
Grazie!
Grazie! Ho sperato che potessi copiare direttamente da BitmapSource a WritableBitmap ... Ora mi chiedo che cosa significhi veramente questo overload di CopyPixels ... –
Il sovraccarico del rettangolo copierà l'immagine bitmap su un Int32Rect quindi non è così utile per passalo a WriteableBitmap. Se vuoi qualcosa di veramente breve e vuoi copiare l'intera immagine: * WriteableBitmap target = new WriteableBitmap (Pic1.Source as BitmapSource); Pic2.Source = target; * –
E se desidero solo una parte di BitmapSource (ho bisogno di un rettangolo con un'altezza relativamente piccola e stessa larghezza)? –