ローカルディスクから書き込み可能なビットマップイメージにイメージファイルをロードして、ユーザーが編集できるようにしたい。WriteableBitmapオブジェクトを作成するとき、コンストラクターにはpixelwidthパラメーターとpixelheightパラメーターが必要です。これら2つをどこで取得するかわかりませんが、誰か助けてくれますか?
6995 次
3 に答える
3
次のコードを試してください。これを行う簡単な方法があります(BitmapImageを使用して画像をロードし、このオブジェクトを直接WriteableBitmapコンストラクターに渡しますが、これが期待どおりに機能するか、パフォーマンスに問題があるかはわかりません。覚えていないでください)。
BitmapSource bmp = BitmapFrame.Create(
new Uri(@"C:\Users\Public\Pictures\Sample Pictures\Koala.jpg", UriKind.Relative),
BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
if (bmp.Format != PixelFormats.Bgra32)
bmp = new FormatConvertedBitmap(bmp, PixelFormats.Bgra32, null, 1);
// Just ignore the last parameter
WriteableBitmap wbmp = new WriteableBitmap(bmp.PixelWidth, bmp.PixelHeight,
kbmp.DpiX, bmp.DpiY, bmp.Format, bmp.Palette);
Int32Rect r = new Int32Rect(0, 0, bmp.PixelWidth, bmp.PixelHeight);
wbmp.Lock();
bmp.CopyPixels(r, wbmp.BackBuffer, wbmp.BackBufferStride * wbmp.PixelHeight,
wbmp.BackBufferStride);
wbmp.AddDirtyRect(r);
wbmp.Unlock();
于 2013-01-16T08:09:33.730 に答える
3
WriteableBitmapイメージを定義するときは、pixelWidthとpixelHeightを気にしないでください。次のことを試してください。
using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
WriteableBitmap image = new WriteableBitmap(1, 1);
image.SetSource(stream);
WriteableBitmapImage.Source = image;
}
于 2013-01-16T15:56:27.103 に答える
3
正しいピクセル幅と高さを取得したい場合は、最初にそれをBitmapImageにロードして、正しく入力する必要があります。
StorageFile storageFile =
await StorageFile.GetFileFromApplicationUriAsync("ms-appx:///myimage.png");
using (IRandomAccessStream fileStream = await storageFile.OpenAsync(FileAccessMode.Read))
{
BitmapImage bitmapImage = new BitmapImage();
await bitmapImage.SetSourceAsync(fileStream);
WriteableBitmap writeableBitmap =
new WriteableBitmap(bitmapImage.PixelWidth, bitmapImage.PixelHeight);
fileStream.Seek(0);
await writeableBitmap.SetSourceAsync(fileStream);
}
(WinRTアプリの場合)
于 2014-12-03T00:09:14.360 に答える