Tôi đang cố sao chép một phần của BitmapSource thành WritableBitmap.Sao chép từ BitmapSource sang WritableBitmap
Đây là mã của tôi cho đến nay:
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();
tôi nhận được "ArgumentException: Giá trị không nằm trong phạm vi dự kiến." trong dòng CopyPixels
.
Tôi đã thử đổi số row.PixelHeight * row.BackBufferStride
bằng row.PixelHeight * row.PixelWidth
, nhưng sau đó tôi gặp lỗi khi nói giá trị quá thấp.
Tôi không thể tìm thấy một ví dụ mã duy nhất sử dụng quá tải này CopyPixels
, vì vậy tôi yêu cầu trợ giúp.
Cảm ơn!
Cảm ơn! Tôi hy vọng rằng tôi có thể sao chép trực tiếp từ BitmapSource vào WritableBitmap ... Bây giờ tôi tự hỏi điều này quá tải của CopyPixels thực sự có nghĩa là làm gì ... –
Quá tải hình chữ nhật sẽ sao chép hình ảnh bitmap thành Int32Rect do đó không hữu ích cho chuyển nó đến WriteableBitmap. Nếu bạn muốn một cái gì đó thực sự ngắn và bạn muốn sao chép toàn bộ hình ảnh: * WriteableBitmap target = new WriteableBitmap (Pic1.Source như BitmapSource); Pic2.Source = target; * –
Và nếu tôi chỉ muốn một phần của BitmapSource (tôi cần một hình chữ nhật có chiều cao tương đối nhỏ và cùng chiều rộng)? –