Ram*_*nir 9 c# wpf bitmapsource writablebitmap
我试图将BitmapSource的一部分复制到WritableBitmap.
到目前为止这是我的代码:
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();
Run Code Online (Sandbox Code Playgroud)
我得到"ArgumentException:值不在预期的范围内." 在线CopyPixels.
我试着换row.PixelHeight * row.BackBufferStride用row.PixelHeight * row.PixelWidth,但后来我得到一个错误说价值太低.
我找不到使用这个重载的单个代码示例CopyPixels,所以我正在寻求帮助.
谢谢!
Dom*_*nic 20
图像的哪一部分试图复制?更改目标ctor中的宽度和高度,以及Int32Rect中的宽度和高度以及x&y偏移到图像中的前两个参数(0,0).或者如果你想复制整件事就离开.
BitmapSource source = sourceImage.Source as BitmapSource;
// Calculate stride of source
int stride = source.PixelWidth * (source.Format.BitsPerPixel + 7) / 8;
// Create data array to hold source pixel data
byte[] data = new byte[stride * source.PixelHeight];
// Copy source image pixels to the data array
source.CopyPixels(data, stride, 0);
// Create WriteableBitmap to copy the pixel data to.
WriteableBitmap target = new WriteableBitmap(
source.PixelWidth,
source.PixelHeight,
source.DpiX, source.DpiY,
source.Format, null);
// Write the pixel data to the WriteableBitmap.
target.WritePixels(
new Int32Rect(0, 0, source.PixelWidth, source.PixelHeight),
data, stride, 0);
// Set the WriteableBitmap as the source for the <Image> element
// in XAML so you can see the result of the copy
targetImage.Source = target;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14215 次 |
| 最近记录: |