以上是我正在使用的图像。我想要实现的是从图像中删除边框的红色部分。如何在Windows Phone中以编程方式实现此目的?我找到了 WriteableBitmapExtensions.Crop()
方法,但我对参数感到困惑(如何找到图像的x,y位置,以及大小和宽度?)
我面临的另一个问题是:我将获得具有不同大小边框的图像,因此我无法对x或y值进行硬编码。
任何人都可以提出解决方案,或指导我解决问题吗?
答案 0 :(得分:3)
这不是一件小事,你还没有与我们分享任何代码,所以我可以给你一些建议。每个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)
只要相邻像素与起始像素的颜色相同,然后向图像的内部移动。随机取得的分数越多,你获得正确分数的可能性就越大。这个问题的一个明显问题是,图片上的某些东西可能与边框颜色相同(完全相同),这使得边框看起来比实际宽。这就是为什么你应该多加点。
如果你展示了一些代码,我很乐意扩大答案。