BitmapSource'un bir bölümünü bir WritableBitmap'e kopyalamaya çalışıyorum. Bu benim defa kodudurBitmapSource'tan WritableBitmap'e kopyalama
: ": Değer beklenen aralıkta girmemektedir ArgumentException."
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();
alıyorum CopyPixels
satırında.
row.PixelHeight * row.BackBufferStride
'u row.PixelHeight * row.PixelWidth
ile değiştirmeyi denedim, ancak sonra değerin çok düşük olduğunu belirten bir hata alıyorum.
CopyPixels
bu aşırı yüklemeyi kullanarak tek bir kod örneği bulamadım, bu yüzden yardım istiyorum.
Teşekkürler!
Teşekkürler! BitmapSource'tan WritableBitmap'e doğrudan kopyalayabileceğimi umuyordum ... Şimdi, CopyPixels'in bu aşırı yükünün gerçekten ne anlama geldiğini merak ediyorum ... –
Dikdörtgen aşırı yük, bitmap görüntüsünü Int32Rect'e kopyalayacaktır; bunu WriteableBitmap'e ilet. Gerçekten çok kısa bir şey istiyorsanız ve tüm görüntüyü kopyalamak istiyorsanız: * WriteableBitmap target = new WriteableBitmap (Pic1.Source BitmapSource olarak); Pic2.Source = target; * –
Ve eğer BitmapSource'un sadece bir parçasını istiyorsanız (nispeten küçük bir yüksekliğe ve aynı genişliğe sahip bir dikdörtgene ihtiyacım var)? –