Suche…


Parameter

Parameter Beschreibung
DecodePixelWidth Lädt das BitmapImage mit der angegebenen Breite. Hilft beim Speichern und beim Speichern großer Bilder, die auf dem Bildschirm kleiner dargestellt werden sollen. Dies ist effizienter als das Laden eines vollständigen Bildes und die Steuerung der Image für die Größenänderung.
DecodePixelHeight Gleich wie DecodePixelHeight . Wenn nur ein Parameter angegeben wird, behält das System das Seitenverhältnis des Bildes beim Laden in der erforderlichen Größe bei.

Verwenden von BitmapImage mit Bildsteuerung

<Image x:Name="MyImage" />
// Show image from web
MyImage.Source = new BitmapImage(new Uri("http://your-image-url.com"))

// Show image from solution
MyImage.Source = new Uri("ms-appx:///your-image-in-solution", UriKind.Absolute)

// Show image from file
IRandomAccessStreamReference file = GetFile();
IRandomAccessStream fileStream = await file.OpenAsync();
var image = new BitmapImage();
await image.SetSourceAsync(fileStream);
MyImage.Source = image;
fileStream.Dispose(); // Don't forget to close the stream

Rendering-Steuerelemente für ein Bild mit RenderTargetBitmap

<TextBlock x:Name="MyControl"
           Text="Hello, world!" />
var rtb = new RenderTargetBitmap();
await rtb.RenderAsync(MyControl); // Render control to RenderTargetBitmap

// Get pixels from RTB
IBuffer pixelBuffer = await rtb.GetPixelsAsync();
byte[] pixels = pixelBuffer.ToArray();

// Support custom DPI
DisplayInformation displayInformation = DisplayInformation.GetForCurrentView();

var stream = new InMemoryRandomAccessStream();
BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
encoder.SetPixelData(BitmapPixelFormat.Bgra8, // RGB with alpha
                     BitmapAlphaMode.Premultiplied,
                     (uint)rtb.PixelWidth,
                     (uint)rtb.PixelHeight,
                     displayInformation.RawDpiX,
                     displayInformation.RawDpiY,
                     pixels);

await encoder.FlushAsync(); // Write data to the stream
stream.Seek(0); // Set cursor to the beginning

// Use stream (e.g. save to file)

Konvertieren Sie Bitmap (zB aus dem Inhalt der Zwischenablage) nach PNG

IRandomAccessStreamReference bitmap = GetBitmap();
IRandomAccessStreamWithContentType stream = await bitmap.OpenReadAsync();
BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
var pixels = await decoder.GetPixelDataAsync();
var outStream = new InMemoryRandomAccessStream();

// Create encoder for PNG
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, outStream);

// Get pixel data from decoder and set them for encoder
encoder.SetPixelData(decoder.BitmapPixelFormat,
                     BitmapAlphaMode.Ignore, // Alpha is not used
                     decoder.OrientedPixelWidth,
                     decoder.OrientedPixelHeight,
                     decoder.DpiX, decoder.DpiY,
                     pixels.DetachPixelData());

await encoder.FlushAsync(); // Write data to the stream

// Here you can use your stream

Bild in XAML laden

<Image Source="ms-appx:///Assets/Windows_10_Hero.png"/>

Ihr Bild ist Teil der Anwendung, im Ordner Assets und als Content markiert

<Image Source="ms-appdata:///local/Windows_10_Hero.png"/>

Ihr Bild wurde im lokalen Ordner Ihrer Anwendung gespeichert

<Image Source="ms-appdata:///roaming/Windows_10_Hero.png"/>

Ihr Bild wurde im Roaming-Ordner Ihrer Anwendung gespeichert

Bild aus Assets in Code laden

 ImageSource result = new BitmapImage(new Uri("ms-appx:///Assets/Windows_10_Hero.png"));

Verwenden Sie result, um die Source Eigenschaft eines Image Steuerelements entweder durch eine Binding oder durch einen Code- Binding festzulegen

Bild aus StorageFile laden

public static async Task<ImageSource> FromStorageFile(StorageFile sf)
{
    using (var randomAccessStream = await sf.OpenAsync(FileAccessMode.Read))
    {
        var result = new BitmapImage();
        await result.SetSourceAsync(randomAccessStream);
        return result;
    }
}

Verwenden Sie result, um die Source Eigenschaft eines Image Steuerelements entweder durch eine Binding oder durch einen Code- Binding festzulegen

Nützlich, wenn Sie Images öffnen müssen, die auf der Festplatte des Benutzers gespeichert sind und nicht im Lieferumfang Ihrer Anwendung enthalten sind

Rendern eines Benutzeroberflächenelements in ein Bild

public static async Task<WriteableBitmap> RenderUIElement(UIElement element)
{
    var bitmap = new RenderTargetBitmap();
    await bitmap.RenderAsync(element);   
    var pixelBuffer = await bitmap.GetPixelsAsync();
    var pixels = pixelBuffer.ToArray();
    var writeableBitmap = new WriteableBitmap(bitmap.PixelWidth, bitmap.PixelHeight);
    using (Stream stream = writeableBitmap.PixelBuffer.AsStream())
    {
        await stream.WriteAsync(pixels, 0, pixels.Length);
    }
    return writeableBitmap;
}

Da WriteableBitmap eine ImageSource , können Sie es verwenden, um die Source-Eigenschaft eines Image-Steuerelements entweder über eine Bindung oder einen Code- ImageSource

Speichern Sie eine WriteableBitmap in einem Stream

public static async Task<IRandomAccessStream> ConvertWriteableBitmapToRandomAccessStream(WriteableBitmap writeableBitmap)
{
    var stream = new InMemoryRandomAccessStream();

    BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream);
    Stream pixelStream = writeableBitmap.PixelBuffer.AsStream();
    byte[] pixels = new byte[pixelStream.Length];
    await pixelStream.ReadAsync(pixels, 0, pixels.Length);

    encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)writeableBitmap.PixelWidth, (uint)writeableBitmap.PixelHeight, 96.0, 96.0, pixels);
    await encoder.FlushAsync();

    return stream;
}

Verwenden Sie den Stream, um die Bitmap in einer Datei zu speichern.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow