调整Live Tile的图像 - WriteableBitmapEx

Dep*_*hie 3 windows-phone-7 writeablebitmapex background-agents

**
找到解决方案
由于这是一个瓷砖,因此图像总是会被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);
Run Code Online (Sandbox Code Playgroud)

**

我已经创建了一个后台代理来更新我的WP7应用程序的实时磁贴.但无论我试图调整大小,我都没有取得好成绩!

有小费吗?目前我有以下代码,但我也试过135乘173和其他插值.

WriteableBitmap writeableBitmap = new WriteableBitmap(bitmapImage);
var resized = writeableBitmap.Resize(173, 173, System.Windows.Media.Imaging.WriteableBitmapExtensions.Interpolation.Bilinear);
Run Code Online (Sandbox Code Playgroud)

下面还添加了一个小矩形来显示应用程序的标题!它的高度为40像素,如果将图像裁剪在上面会很棒.实际图像总是250 x 321px

当前的瓷砖

实际图像

Cla*_*sen 5

您的问题是您没有计算宽度/高度到正确的宽高比.

因此,要获得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);
Run Code Online (Sandbox Code Playgroud)

并记住要Stretch="Uniform"避免将图像拉伸到不必要的比例.

要创建173x173像素图像,并将其他图像应用于顶部,请使用WriteableBitmapEx中的Blit函数

var tileImage = new WriteableBitmap(173, 173, ...)
tileImage.Blit(new Rect(width, height), resizedImage, new Rect(width, height), BlendMode.None);
Run Code Online (Sandbox Code Playgroud)