Ste*_*Pet 8 c# image windows-phone-7 windows-phone-8 writablebitmap
以上是我正在使用的图像.我想要实现的是从图像中删除边框的红色部分.如何在Windows Phone中以编程方式实现此目的?我找到了WriteableBitmapExtensions.Crop()
方法,但我对参数感到困惑(如何找到图像的x,y位置,以及大小和宽度?)
我面临的另一个问题是:我将获得具有不同大小边框的图像,因此我无法对x或y值进行硬编码.
任何人都可以建议解决方案,或指导我解决问题?
这不是一件小事,您还没有与我们分享任何代码,所以我可以给您一些建议。每个 WriteableBitmap 都定义了宽度和高度。您应该能够通过以下方式访问它
wb.PixelWidth;
wb.PixelHeight;
Run Code Online (Sandbox Code Playgroud)
其中 wb 是你的 WriteableBitmap (图片)
话虽如此,使用 WriteableBitmapEx 库裁剪 WriteableBitmap 是微不足道的
var croppedBmp = wb.Crop(10, 10, 300, 220);
Run Code Online (Sandbox Code Playgroud)
如果你的 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)
然后向图片内部移动,只要相邻像素与起始像素颜色相同即可。你随机取的分数越多,你答对的机会就越大。这样做的明显问题是,图片上的某些内容可能与边框颜色相同(完全相同),这会使边框看起来比实际宽度更宽。这就是为什么你应该多拿点。
如果您展示了一些代码,我很乐意扩展答案。