ユーザーがコントロールを介して送信した Silverlight 3 の画像のサイズを変更しようとしていますOpenFileDialog
。ファイルの内容を取得してWriteableBitmap
オブジェクトに配置し、それを画面上のImage
コントロールに表示できます。コントロールは、画像コントロールのImage
サイズに合わせてサイズを変更することもできます。これは素晴らしいことです。
問題は、メモリ内の画像がまだ元のフル解像度の画像であることです。ピクセルごとに実行する必要がある高価な操作がたくさんあるため、メモリ内でサイズを変更する必要があります。これまでのところ、次のコードがあります...
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
btnUploadPhoto.Click += new RoutedEventHandler(UploadPhoto_Click);
}
private void UploadPhoto_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "Image files (*.png;*.jpg;*.gif;*.bmp)|*.png;*.jpg;*.gif;*.bmp";
if (dialog.ShowDialog() == true)
{
WriteableBitmap bitmap = new WriteableBitmap(500, 500);
bitmap.SetSource(dialog.File.OpenRead());
imgMainImage.Source = bitmap;
txtMessage.Text = "Image size: " + bitmap.PixelWidth + " x " + bitmap.PixelHeight;
}
}
}
問題は、WriteableBitmap クラスに Resize メソッドがなく、コンストラクターで高さと幅を設定しても効果がないように見えることです。