**
找到了解决方案
由于这是一块瓷砖,因此图像总是会被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和其他Interpolation。
WriteableBitmap writeableBitmap = new WriteableBitmap(bitmapImage);
var resized = writeableBitmap.Resize(173, 173, System.Windows.Media.Imaging.WriteableBitmapExtensions.Interpolation.Bilinear);
下面还添加了一个小矩形来显示应用程序的标题!它的高度为40像素,如果将图像裁剪在上面会很棒。 实际图像总是250 x 321px
答案 0 :(得分:5)
您的问题是,您没有将宽度/高度计算为正确的Aspect ratio。
因此,要获得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像素图像,并将另一个图像应用于顶部,请使用WriteableBitmapEx中的Blit函数
var tileImage = new WriteableBitmap(173, 173, ...)
tileImage.Blit(new Rect(width, height), resizedImage, new Rect(width, height), BlendMode.None);