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


您的问题是您没有计算宽度/高度到正确的宽高比.
因此,要获得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)