Zoeken…


parameters

Parameter Beschrijving
DecodePixelWidth Laadt BitmapImage met de opgegeven breedte. Helpt geheugengebruik en snelheid bij het laden van grote afbeeldingen die kleiner op het scherm moeten worden weergegeven. Dit is efficiënter dan het laden van de volledige afbeelding en vertrouw op de Image om het formaat te wijzigen.
DecodePixelHeight Hetzelfde als DecodePixelHeight . Als er slechts één parameter is opgegeven, behoudt het systeem de beeldverhouding van de afbeelding tijdens het laden op de vereiste grootte.

BitmapImage gebruiken met Afbeeldingsbeheer

<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

Besturingselementen naar afbeelding renderen met 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)

Converteer bitmap (bijv. Van klembordinhoud) naar 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

Laad afbeelding in XAML

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

Uw afbeelding maakt deel uit van de applicatie, in de map Activa en gemarkeerd als Content

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

Uw afbeelding is opgeslagen in de lokale map van uw toepassing

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

Uw afbeelding is opgeslagen in de zwervende map van uw toepassing

Afbeelding uit activa in code laden

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

Gebruik resultaat om de eigenschap Source van een Image stellen, al dan niet via een Binding of code

Laad afbeelding uit StorageFile

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

Gebruik resultaat om de eigenschap Source van een Image stellen, al dan niet via een Binding of code

Handig wanneer u afbeeldingen moet openen die op de schijf van de gebruiker zijn opgeslagen en niet met uw toepassing zijn meegeleverd

Een UI-element renderen naar een afbeelding

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

Aangezien WriteableBitmap is een ImageSource je kunt het gebruiken om het pand Bron van een besturingselement afbeelding ingesteld ofwel hoewel een Binding of code-behind

Sla een WriteableBitmap op in een 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;
}

Gebruik de stream om de bitmap in een bestand op te slaan.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow