Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 3 additions & 6 deletions samples/Platform.Maui.Linux.Gtk4.Sample/App.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ private readonly (string name, Func<Page> factory)[] _pages =
("🪟 Modal Pages", () => new ModalDemoPage()),
("🪟 Multi-Window", () => new MultiWindowPage()),
("🎨 Theme", () => new ThemePage()),
("🎨 Images", () => new ImagePage()),
];

public MainShell()
Expand Down Expand Up @@ -84,13 +85,9 @@ public MainShell()
}
};

Flyout = new ContentPage
{
Title = "Menu",
Content = menuList,
};
Flyout = new ContentPage { Title = "Menu", Content = menuList, };

Detail = new NavigationPage(new HomePage());
IsPresented = true;
}
}
}
93 changes: 93 additions & 0 deletions samples/Platform.Maui.Linux.Gtk4.Sample/Pages/ImagePage.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
<ContentPage
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Platform.Maui.Linux.Gtk4.Sample.Pages.ImagePage"
Title="Image">
<ScrollView>
<VerticalStackLayout
Margin="12">
<Label
Text="UriSource" />
<Image
Source="https://aka.ms/campus.jpg" />
<Label
Text="FileSource png" />
<Image
Background="Purple"
Source="dotnet_bot.png" />
<Label
Text="FileSource jpg" />
<Image
Background="Purple"
Source="dotnet_bot.jpg" />
<Label
Text="FileSource tif" />
<Image
Background="Purple"
Source="dotnet_bot.tif" />
<Label
Text="FileSource svg" />
<Image
Background="Purple"
Source="dotnet_bot.svg" />
<Label
Text="Font Image Source" />
<Image
Background="Green">
<Image.Source>
<FontImageSource
FontAutoScalingEnabled="False"
Size="20"
FontFamily="Ionicons"
Glyph="&#xf30c;">
</FontImageSource>
</Image.Source>
</Image>
<Label
Text="Font Image Source Scaling Disabled" />
<Image BackgroundColor="Green" HorizontalOptions="Center">
<Image.Source>
<FontImageSource
FontAutoScalingEnabled="True"
FontFamily="Ionicons"
Size="90"
Glyph="&#xf30c;">
</FontImageSource>
</Image.Source>
</Image>
<Label
Text="Animating a gif" />
<Switch
x:Name="IsAnimationPlayingSwitch"
IsToggled="True" />
<Image
Source="animated_heart.gif"
WidthRequest="200"
IsAnimationPlaying="{Binding Source={x:Reference IsAnimationPlayingSwitch},Path=IsToggled}" />
<Label
Text="Stream Source" />
<Image
x:Name="StreamSourceImage"
IsVisible="False"
Background="Pink" />
<Label
Text="Opacity (0.5)" />
<Image
Opacity="0.5"
Background="Black"
Source="dotnet_bot.png" />
<Label
Text="Animated GIF" />
<Image
x:Name="AnimatedGifImage"
Source="animated_heart.gif"
IsAnimationPlaying="True" />
<Button
Text="Start/Stop"
Clicked="AnimationStartStop_Clicked" />
<Button
Text="Use Online Source"
Clicked="UseOnlineSource_Clicked" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
33 changes: 33 additions & 0 deletions samples/Platform.Maui.Linux.Gtk4.Sample/Pages/ImagePage.xaml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using System;
using System.IO;
using Microsoft.Maui.Controls;

namespace Platform.Maui.Linux.Gtk4.Sample.Pages;

public partial class ImagePage
{
public static string Base64EncodedImage = "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";

public ImagePage()
{
InitializeComponent();
}

protected override void OnAppearing()
{
StreamSourceImage.IsVisible = true;
var imageBytes = Convert.FromBase64String(Base64EncodedImage);
StreamSourceImage.Source = ImageSource.FromStream(() => new MemoryStream(imageBytes));
}

void AnimationStartStop_Clicked(object sender, EventArgs e)
{
AnimatedGifImage.IsAnimationPlaying = !AnimatedGifImage.IsAnimationPlaying;
}

void UseOnlineSource_Clicked(object sender, EventArgs e)
{
AnimatedGifImage.Source =
ImageSource.FromUri(new Uri("https://raw.githubusercontent.com/dotnet/maui/126f47aaf9d5c01224f54fe1c6bfb1c8299cc2fe/src/Compatibility/ControlGallery/src/iOS/GifTwo.gif"));
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading