Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Grafika interfejsu użytkownika aplikacji wieloplatformowej platformy .NET (.NET MAUI) obejmuje funkcje ładowania, zapisywania, zmieniania rozmiaru i obniżania rozmiaru obrazów. Obsługiwane formaty obrazów są zależne od platformy bazowej.
Obrazy są reprezentowane przez IImage typ, który definiuje następujące właściwości:
- Width, typu
float
, który definiuje szerokość obrazu. - Height, typu
float
, który definiuje wysokość obrazu.
Opcjonalny ImageFormat argument można określić podczas ładowania i zapisywania obrazów. Wyliczenie ImageFormat definiuje Png
elementy członkowskie , Jpeg
, Gif
, Tiff
i Bmp
. Ten argument jest jednak używany tylko wtedy, gdy format obrazu jest obsługiwany przez podstawową platformę.
Uwaga
Program .NET MAUI zawiera dwa różne IImage
interfejsy. Microsoft.Maui.Graphics.IImage
służy do wyświetlania, manipulowania obrazami i trwałości podczas wyświetlania grafiki w obiekcie GraphicsView. Microsoft.Maui.IImage
to interfejs, który abstrahuje od kontrolki Image .
Ładowanie obrazu
Funkcja ładowania obrazów jest udostępniana przez klasę PlatformImage . Obrazy można ładować ze strumienia FromStream za pomocą metody lub z tablicy bajtów przy użyciu konstruktora PlatformImage .
W poniższym przykładzie pokazano, jak załadować obraz:
using Microsoft.Maui.Graphics.Platform;
using System.Reflection;
using IImage = Microsoft.Maui.Graphics.IImage;
IImage image;
Assembly assembly = GetType().GetTypeInfo().Assembly;
using (Stream stream = assembly.GetManifestResourceStream("GraphicsViewDemos.Resources.Images.dotnet_bot.png"))
{
image = PlatformImage.FromStream(stream);
}
if (image != null)
{
canvas.DrawImage(image, 10, 10, image.Width, image.Height);
}
W tym przykładzie obraz jest pobierany z zestawu, ładowany jako strumień i wyświetlany.
Ważne
Ładowanie obrazu osadzonego w zestawie wymaga, aby obraz miał ustawioną akcję kompilacji na wartość Zasób osadzony, a nie MauiImage.
Zmienianie rozmiaru obrazu
Rozmiar obrazów można zmienić przy użyciu Resize metody , która wymaga width
i height
argumentów typu float
, które reprezentują wymiary docelowe obrazu. Metoda Resize akceptuje również dwa opcjonalne argumenty:
- ResizeMode Argument, który kontroluje sposób zmiany rozmiaru obrazu w celu dopasowania do jego wymiarów docelowych.
bool
Argument, który określa, czy obraz źródłowy zostanie usunięty po wykonaniu operacji zmiany rozmiaru. Ten argument jest domyślnie ustawiony nafalse
wartość , co oznacza, że obraz źródłowy nie jest usuwany.
Wyliczenie ResizeMode definiuje następujące elementy członkowskie, które określają, jak zmienić rozmiar obrazu na rozmiar docelowy:
Fit
, który listboxuje obraz tak, aby pasował do rozmiaru docelowego.Bleed
, który przycina obraz tak, aby pasował do rozmiaru docelowego, zachowując współczynnik proporcji.Stretch
, który rozciąga obraz tak, aby wypełniał dostępne miejsce. Może to spowodować zmianę współczynnika proporcji obrazu.
W poniższym przykładzie pokazano, jak zmienić rozmiar obrazu:
using Microsoft.Maui.Graphics.Platform;
using System.Reflection;
using IImage = Microsoft.Maui.Graphics.IImage;
IImage image;
Assembly assembly = GetType().GetTypeInfo().Assembly;
using (Stream stream = assembly.GetManifestResourceStream("GraphicsViewDemos.Resources.Images.dotnet_bot.png"))
{
image = PlatformImage.FromStream(stream);
}
if (image != null)
{
IImage newImage = image.Resize(100, 60, ResizeMode.Stretch, true);
canvas.DrawImage(newImage, 10, 10, newImage.Width, newImage.Height);
}
W tym przykładzie obraz jest pobierany z zestawu i ładowany jako strumień. Rozmiar obrazu jest zmieniany przy użyciu Resize metody , a jego argumenty określają nowy rozmiar i że należy go rozciągnąć, aby wypełnić dostępne miejsce. Ponadto obraz źródłowy jest usuwany. Zmieniany rozmiar obrazu jest następnie rysowany przy rzeczywistym rozmiarze (10 10).
Obniżanie rozmiaru obrazu
Obrazy można obniżyć przy użyciu jednego z Downsize przeciążeń. Pierwsze przeciążenie wymaga pojedynczej float
wartości reprezentującej maksymalną szerokość lub wysokość obrazu, a jednocześnie obniża rozmiar obrazu przy zachowaniu współczynnika proporcji. Drugie przeciążenie wymaga dwóch float
argumentów reprezentujących maksymalną szerokość i maksymalną wysokość obrazu.
Przeciążenia Downsize akceptują również opcjonalny bool
argument, który kontroluje, czy obraz źródłowy powinien zostać usunięty po wykonaniu operacji obniżania rozmiaru. Ten argument domyślnie ma wartość false
, co oznacza, że obraz źródłowy nie jest usuwany.
W poniższym przykładzie pokazano, jak obniżyć rozmiar obrazu:
using Microsoft.Maui.Graphics.Platform;
using System.Reflection;
using IImage = Microsoft.Maui.Graphics.IImage;
IImage image;
Assembly assembly = GetType().GetTypeInfo().Assembly;
using (Stream stream = assembly.GetManifestResourceStream("GraphicsViewDemos.Resources.Images.dotnet_bot.png"))
{
image = PlatformImage.FromStream(stream);
}
if (image != null)
{
IImage newImage = image.Downsize(100, true);
canvas.DrawImage(newImage, 10, 10, newImage.Width, newImage.Height);
}
W tym przykładzie obraz jest pobierany z zestawu i ładowany jako strumień. Obraz jest downsized przy użyciu Downsize metody , a argument określający, że jego największy wymiar powinien być ustawiony na 100 pikseli. Ponadto obraz źródłowy jest usuwany. Obraz z downsized jest następnie rysowany przy rzeczywistym rozmiarze (10,10).
Zapisywanie obrazu
Obrazy można zapisywać przy użyciu Save metod i SaveAsync . Każda metoda zapisuje element w IImage obiekcie Streami umożliwia określenie opcjonalnych ImageFormat i wartości jakości.
Uwaga
Metody Save i SaveAsync w systemach Android i iOS mogą zapisywać obrazy w formacie JPEG i PNG.
W poniższym przykładzie pokazano, jak zapisać obraz:
using Microsoft.Maui.Graphics.Platform;
using System.Reflection;
using IImage = Microsoft.Maui.Graphics.IImage;
IImage image;
Assembly assembly = GetType().GetTypeInfo().Assembly;
using (Stream stream = assembly.GetManifestResourceStream("GraphicsViewDemos.Resources.Images.dotnet_bot.png"))
{
image = PlatformImage.FromStream(stream);
}
// Save image to a memory stream
if (image != null)
{
IImage newImage = image.Downsize(150, true);
using (MemoryStream memStream = new MemoryStream())
{
newImage.Save(memStream);
// Reset destination stream position to 0 if saving to a file
}
}
W tym przykładzie obraz jest pobierany z zestawu i ładowany jako strumień. Obraz jest downsized przy użyciu Downsize metody , a argument określający, że jego największy wymiar powinien być ustawiony na 150 pikseli. Ponadto obraz źródłowy jest usuwany. Obraz z downsized jest następnie zapisywany w strumieniu.