gpt4 book ai didi

silverlight - 如何复制 WriteableBitmap 的一部分?

转载 作者:行者123 更新时间:2023-12-01 11:57:01 26 4
gpt4 key购买 nike

我有一些 WriteableBitmap 对象。假设实际上位于 WriteableBitmap 对象上的图像是 600x400。

我想复制部分图像 - 一些矩形(例如 WriteableBitmap 中间的 100x100 矩形)并将副本粘贴到其他图像控件。

我该怎么做?

最佳答案

我怀疑你现在已经解决了这个问题,但我遇到了同样的问题并且我找到了答案所以我想我应该发布它。 http://writeablebitmapex.codeplex.com/ 处的代码有一个“裁剪”例程,几乎可以满足您的需求。一旦将 SizeOfArgb 常量设置为 4,就可以使用它:

public static WriteableBitmap Crop(this WriteableBitmap bmp, int x, int y, int width, int height)
{
var srcWidth = bmp.PixelWidth;
var srcHeight = bmp.PixelHeight;

// If the rectangle is completly out of the bitmap
if (x > srcWidth || y > srcHeight)
{
return new WriteableBitmap(0, 0);
}

// Clamp to boundaries
if (x < 0) x = 0;
if (x + width > srcWidth) width = srcWidth - x;
if (y < 0) y = 0;
if (y + height > srcHeight) height = srcHeight - y;

// Copy the pixels line by line using fast BlockCopy
var result = new WriteableBitmap(width, height);
for (var line = 0; line < height; line++)
{
var srcOff = ((y + line) * srcWidth + x) * SizeOfArgb;
var dstOff = line * width * SizeOfArgb;
Buffer.BlockCopy(bmp.Pixels, srcOff, result.Pixels, dstOff, width * SizeOfArgb);
}
return result;
}

关于silverlight - 如何复制 WriteableBitmap 的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6096822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com