uwp
Afbeeldingen
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.