Mascota de escritorio - aunque inútil, pero decoración de escritorio muy divertida. Este artículo muestra, quizás, la implementación más simple del mismo.
GIF debajo del corte!
Un poco sobre cómo empezar con WPF
Para crear la aplicación, usamos Visual Studio 2017. Entonces, cree un proyecto, Visual C # -> Aplicación WPF .
, . -> , Images.
, .
, , . MainWindow.xaml. Window. :
Title="MainWindow" Height="450" Width="800">
:
WindowStyle="None" ResizeMode="NoResize"
:
Background="Transparent" AllowsTransparency="True"
, . , . , Top , Left – :
WindowStartupLocation="Manual" Top="485" Left="1000"
Window :
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="340" Width="353.2" WindowStyle="None" Background="Transparent" AllowsTransparency="True" WindowStartupLocation="Manual" Top="485" Left="1000">
WpfAnimatedGif
, - WPF , WpfAnimatedGif. NuGet…
“WpfAnimatedGif”, .
Window :
xmlns:gif="http://wpfanimatedgif.codeplex.com"
, .
Grid. Grid:
<Grid Opacity="1">
Image, AnimatedSource WpfAnimatedGif:
gif:ImageBehavior.AnimatedSource="Images/a.gif"
, gif:ImageBehavior.RepeatBehavior="Forever", , gif:ImageBehavior.RepeatBehavior="1x”.
<Image Name="img" gif:ImageBehavior.AnimatedSource="Images/a.gif" gif:ImageBehavior.RepeatBehavior="1x" Margin="-68,-63,-68,-38" RenderTransformOrigin="0.5,0.5" gif:ImageBehavior.AutoStart="True" gif:ImageBehavior.AnimationCompleted="Complete">
</Image>
gif:ImageBehavior.AnimationCompleted="Complete" – , .
:
<Button Name="btn1" Content="Button" HorizontalAlignment="Left" Height="314" Margin="93,26,0,0" VerticalAlignment="Top" Width="163" Opacity="0" Click="Change"/>
Click=”Change”, Change – , .
Grid :
<Grid Opacity="1">
<Image Name="img" gif:ImageBehavior.AnimatedSource="Images/a.gif" gif:ImageBehavior.RepeatBehavior="1x" Margin="-68,-63,-68,-38" RenderTransformOrigin="0.5,0.5" gif:ImageBehavior.AutoStart="True" gif:ImageBehavior.AnimationCompleted="Complete">
</Image>
<Button Name="btn1" Content="Button" HorizontalAlignment="Left" Height="314" Margin="93,26,0,0" VerticalAlignment="Top" Width="163" Opacity="0" Click="Change"/>
</Grid>
(MainWindow.xaml.cs). , .
MainWindow:Window :
int k = 0;//
string num = "";//
int n=11;// +1( )
: Complete Change.
private void Complete(object sender, RoutedEventArgs e)
{
num = "Images/" + k.ToString() + ".gif";
BitmapImage image = new BitmapImage();
image.BeginInit();
image.UriSource = new Uri(num, UriKind.Relative);
image.EndInit();
ImageBehavior.SetAnimatedSource(img, image); // , img – name Image, image –
}
private void Change(object sender, RoutedEventArgs e)
{
k = (k + 1) % n;
BitmapImage image = new BitmapImage();
image.BeginInit();
if (k%2==0) image.UriSource = new Uri("Images/a.gif", UriKind.Relative);
else image.UriSource = new Uri("Images/b.gif", UriKind.Relative);
image.EndInit();
ImageBehavior.SetAnimatedSource(img, image);
}
remitente del objeto en este caso un botón. a.gif y b.gif son animaciones de estornudos (derecha e izquierda), y 0.gif - 10.gif son emociones. Cada vez que presiona k , aumenta hasta que se vuelve mayor que 10. Si k es par , va en un sentido, si es impar, en el otro. Una vez finalizada la animación del estornudo, se ejecuta la función Completo , cambiando la emoción del personaje.