WPF制作《三国志幻想大陆》的武将浏览列表

利用WPF制作游戏《三国志幻想大陆》的武将浏览列表,思路参考https://github.com/BYJRK/GenshinCharacterBrowser

源码见githubgithub
在这里插入图片描述

主要代码实现

动画部分

武将名称进入动画

定义

<Storyboard x:Key="roleNameIn">
    <DoubleAnimation
        Storyboard.TargetName="roleName"
        Storyboard.TargetProperty="RenderTransform.(TranslateTransform.X)"
        From="-300"
        To="0"
        Duration="0:0:0.35">
        <DoubleAnimation.EasingFunction>
            <CubicEase EasingMode="EaseInOut" />
        </DoubleAnimation.EasingFunction>
    </DoubleAnimation>
    <DoubleAnimation
        Storyboard.TargetName="roleName"
        Storyboard.TargetProperty="Opacity"
        From="0"
        To="1"
        Duration="0:0:0.35" />

</Storyboard>

武将图片进入动画

<Storyboard x:Key="protraitIn">
    <DoubleAnimation
        Storyboard.TargetName="protraitPic"
        Storyboard.TargetProperty="RenderTransform.(TranslateTransform.X)"
        From="400"
        To="100"
        Duration="0:0:0.35">
        <DoubleAnimation.EasingFunction>
            <CubicEase EasingMode="EaseInOut" />
        </DoubleAnimation.EasingFunction>
    </DoubleAnimation>
    <DoubleAnimation
        Storyboard.TargetName="protraitPic"
        Storyboard.TargetProperty="Opacity"
        From="0"
        To="1"
        Duration="0:0:0.35" />
</Storyboard>

调用

  <!--  选中角色立绘事件  -->
  <i:EventTrigger EventName="SelectionChanged">
      <i:InvokeCommandAction Command="{Binding DataContext.SelectProtraitCommand, RelativeSource={RelativeSource AncestorType=ListBox, AncestorLevel=2}}" CommandParameter="{Binding SelectedItem, ElementName=charListBox}" />
      <!--  启动在Resources定义的动画  -->
      <i:ControlStoryboardAction ControlStoryboardOption="Play" Storyboard="{StaticResource protraitIn}" />
      <i:ControlStoryboardAction ControlStoryboardOption="Play" Storyboard="{StaticResource roleNameIn}" />
  </i:EventTrigger>

角色头像未选中灰色显示

Converter部分

public class ImageToGrayImage : IValueConverter
{
    public object Convert(
        object value,
        Type targetType,
        object parameter,
        System.Globalization.CultureInfo culture
    )
    {
        BitmapImage image = value as BitmapImage;
        if (image != null)
        {
            FormatConvertedBitmap grayBitmapSource = new FormatConvertedBitmap();
            grayBitmapSource.BeginInit();
            grayBitmapSource.Source = image;
            grayBitmapSource.DestinationFormat = PixelFormats.Gray8;
            grayBitmapSource.EndInit();
            return grayBitmapSource;
        }
        return value;
    }

    public object ConvertBack(
        object value,
        Type targetType,
        object parameter,
        System.Globalization.CultureInfo culture
    )
    {
        throw new NotImplementedException();
    }
}

使用

 <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=IsSelected}" Value="False">
     <Setter TargetName="roleIcon" Property="Source" Value="{Binding Icon, Converter={StaticResource convGrayImage}}" />
 </DataTrigger>

爬虫部分

这部分都是发请求和json解析,具体看源码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值