3

**
解決策を見つけました
これはタイルであるため、画像は常に173x173にストレッチされます。
これを回避するには、最初に173 x 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アプリのライブタイルを更新するためのバックグラウンドエージェントを作成しました。しかし、サイズを変更しようとしても、良い結果は得られません。

任意のヒント?現在、次のコードがありますが、135x173およびその他の補間も試しました。

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

アプリのタイトルを示すために、下に小さな長方形も追加されています。高さは40ピクセルですが、画像を上でトリミングすると便利です。実際の画像は常に250x321pxです

現在のタイル

実際の画像

4

1 に答える 1

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);

Stretch="Uniform"また、画像が不必要な比率に引き伸ばされないように設定することを忘れないでください。

173x173 ピクセルの画像を作成し、他の画像を上に適用するには、WriteableBitmapExの Blit 関数を使用します。

var tileImage = new WriteableBitmap(173, 173, ...)
tileImage.Blit(new Rect(width, height), resizedImage, new Rect(width, height), BlendMode.None);
于 2012-01-05T13:56:45.723 に答える