以上是我正在使用的图像。我想要实现的是从图像中删除边框的红色部分。如何在 Windows Phone 中以编程方式实现这一点?我找到了WriteableBitmapExtensions.Crop()
方法,但我对参数感到困惑(我如何找到图像的 x、y 位置以及大小和宽度?)
我面临的另一个问题是:我将获得具有不同大小边框的图像,因此我无法对 x 或 y 值进行硬编码。
任何人都可以提出解决方案,或指导我解决问题吗?
以上是我正在使用的图像。我想要实现的是从图像中删除边框的红色部分。如何在 Windows Phone 中以编程方式实现这一点?我找到了WriteableBitmapExtensions.Crop()
方法,但我对参数感到困惑(我如何找到图像的 x、y 位置以及大小和宽度?)
我面临的另一个问题是:我将获得具有不同大小边框的图像,因此我无法对 x 或 y 值进行硬编码。
任何人都可以提出解决方案,或指导我解决问题吗?
这不是一件小事,您还没有与我们共享任何代码,所以我可以给您一些建议。每个 WriteableBitmap 都定义了宽度和高度。您应该可以通过
wb.PixelWidth;
wb.PixelHeight;
其中 wb 是您的 WriteableBitmap (图片)
话虽如此,使用 WriteableBitmapEx 库裁剪 WriteableBitmap 是微不足道的
var croppedBmp = wb.Crop(10, 10, 300, 220);
如果你的 wb 是 320x240 并且边框的宽度是 10,那么上面的 Crop 调用就可以解决问题 - 你将从点 (10,10) 开始到 (310, 230) 结束的内部矩形
现在到您的第二个问题 - 不知道边框的宽度。如果你知道这会有所帮助
假设这是真的,您可以考虑一个简单的算法(可能并非每次都正确,但您可以对其进行测试和调整),例如,它会采用一些随机点
(0,randNumber < wb.PixelHeight), (randNumber < wb.PixelWidth, 0), (wb.PixelWidth, randNumber < wb.PixelHeight), (randNumber < wb.PixelWidth, wb.PixelHeight)
然后只要相邻像素与起始像素颜色相同,就向图片的内部移动。你随机取的分数越多,你做对的机会就越大。这样做的一个明显问题是,图片上的某些东西可能与边框颜色相同(完全相同),这会使边框看起来比实际更宽。这就是为什么你应该得到更多的分数。
如果您展示了一些代码,我很乐意扩展答案。