Windows phone 7 调整实时互动程序的图像大小-WriteableBitmapEx

Windows phone 7 调整实时互动程序的图像大小-WriteableBitmapEx,windows-phone-7,background-agents,writeablebitmapex,Windows Phone 7,Background Agents,Writeablebitmapex,** 找到了解决办法 由于这是一个瓷砖,因此图像将始终以173乘173的速度延伸到173! 为了避免这种情况,首先创建一个173乘173的虚拟对象,并将其与调整大小的虚拟对象合并 Rect rect = new Rect(0.0, 0.0, width, height); WriteableBitmap bitmapDummy = new WriteableBitmap(173, 173); bitmapDummy.Blit(rect, resized, rect, WriteableBit

**
找到了解决办法
由于这是一个瓷砖,因此图像将始终以173乘173的速度延伸到173!
为了避免这种情况,首先创建一个173乘173的虚拟对象,并将其与调整大小的虚拟对象合并

Rect rect = new Rect(0.0, 0.0, width, height);
WriteableBitmap bitmapDummy = new WriteableBitmap(173, 173);
bitmapDummy.Blit(rect, resized, rect, WriteableBitmapExtensions.BlendMode.None);
**

我已经创建了一个后台代理来更新WP7应用程序的实时互动程序。 但是无论我如何调整它的大小,我都没有得到一个好的结果

有什么建议吗?目前我有以下代码,但我也尝试了135乘173和其他插值

WriteableBitmap writeableBitmap = new WriteableBitmap(bitmapImage);
var resized = writeableBitmap.Resize(173, 173, System.Windows.Media.Imaging.WriteableBitmapExtensions.Interpolation.Bilinear);
下面还添加了一个小矩形来显示应用程序的标题!它的高度是40px,如果图像在上面被裁剪,那就太好了。 实际图像始终为250 x 321像素


您的问题是,您没有正确计算宽度/高度

因此,要获得1:1的比例,需要134.735像素的宽度,173像素的高度

这可以通过首先确定哪一侧最大来实现

var aspect = Math.Max(bitmapImage.Width, bitmapImage.Height)
var ratio = largest / 173;
var width = width / ratio;
var height = height / ratio;

var resizedImage = writeableBitmap.Resize(width, height, System.Windows.Media.Imaging.WriteableBitmapExtensions.Interpolation.Bilinear);
请记住设置
Stretch=“Uniform”
,以避免将图像拉伸到不必要的比例

要创建173x173像素图像,并在顶部应用另一个图像,请使用


克劳斯,谢谢你的洞察力!我马上就要考试了!(再次感谢)克劳斯,不行!我无法设置任何拉伸道具,因为我只是保存图像并使用实时互动程序的uri。我猜我需要创建一个虚拟173 x 173,并将其与新调整大小的道具合并,以避免拉伸。。。现在要了解如何执行此操作是的,如果图像不是173x173,Live互动程序当然会尝试拉伸图像。但不管怎样,你都必须计算出这个比率:p找到了:)我会把我的答案加到这个问题上,事实上,这个比率必须是正确的;)
var tileImage = new WriteableBitmap(173, 173, ...)
tileImage.Blit(new Rect(width, height), resizedImage, new Rect(width, height), BlendMode.None);