xunkong / KeqingNiuza

刻记牛杂店
MIT License
517 stars 53 forks source link

一些建议 #7

Closed Lightczx closed 3 years ago

Lightczx commented 3 years ago

代码层面: 像下面这种XAML,在DataTemplate里面

<TextBlock FontSize="12" Foreground="{Binding Brush}" Text="{Binding Name}" />
<TextBlock FontSize="12" Foreground="{Binding Brush}" Text="[" />
<TextBlock FontSize="12" Foreground="{Binding Brush}" Text="{Binding Num}" />
<TextBlock FontSize="12" Foreground="{Binding Brush}" Text="]" />

可以简化为

<TextBlock FontSize="12" Foreground="{Binding Brush}">
    <TextBlock.Text>
        <MulitBinding StringFormat="{}{0}[{1}]" FallBackValue="">
            <Binding Path="Name"/>
            <Binding Path="Num"/>
        </MulitBinding>
    </TextBlock.Text>
</TextBlock>

FallbackValue置空,这样在没有数据时不会显示"[]",控件的数量也从4个减少到了1个


这里用来显示角色图片的ImageBrush

<Border.Background>
    <ImageBrush ImageSource="{Binding Thumb, Converter={StaticResource ImageConverter}}" />
</Border.Background>

最好加上

<Border.Background>
    <ImageBrush 
        ImageSource="{Binding Thumb, Converter={StaticResource ImageConverter}}" 
        RenderOptions.BitmapScalingMode="HighQuality"/>
</Border.Background>

尽管渲染速度会变慢,但是图片精细度会高很多,锯齿也能减少

Scighost commented 3 years ago

学习了(真有人看我的代码,好高兴

Lightczx commented 3 years ago

感觉很多地方都能优化的其实

Lightczx commented 3 years ago

希望下个版本能实装图片的锯齿消除,这个看的我头疼

Scighost commented 3 years ago

能截个图我看看吗? 我的显示器上 RenderOptions.BitmapScalingMode 属性每个值都尝试过了,几乎看不到有什么区别。

Lightczx commented 3 years ago

查了一下 RenderOptions.BitmapScalingMode 需要附加到附加使用Brush的控件上,也就是你的Border

Lightczx commented 3 years ago

Before: image.png After: image.png

在我的显示器上效果非常显著

Lightczx commented 3 years ago
<Border 
    x:Name="ImageBorder" 
    Width="100" 
    Height="100" 
    VerticalAlignment="Top" 
    BorderThickness="0" 
    CornerRadius="0 0 20 0" 
    RenderOptions.BitmapScalingMode="HighQuality">
    <Border.Background>
        <ImageBrush ImageSource="{Binding Thumb, Converter={StaticResource ImageConverter}}" />
    </Border.Background>
</Border>
Scighost commented 3 years ago

加上RenderOptions.BitmapScalingMode="HighQuality"属性后图片确实变得柔和一些,锯齿明显减少了 前后对比 image image

另外,点击头像后,人物全身图片的质量怎么样

前后对比 image image

Lightczx commented 3 years ago

全身的这个出于性能考虑可以不加,本身图片够大,在进行小尺度的拉伸后锯齿还是可以接受的 如果要加那最好不过

Lightczx commented 3 years ago

我倒是觉得点击进入详细页面的这个功能做的太隐含了,我最开始甚至完全不觉得那些item可以点进去

Scighost commented 3 years ago

我觉得问题不大,能用Win10的电脑不差这点儿性能 image

这个详细页面本身是突发奇想做出来的,没什么有用信息,也就没有明显的交互提示。 下次重构时会删除这些没啥用的功能,毕竟我自己都不会去看🤣

Lightczx commented 3 years ago

详细页面右侧的信息我认为还是蛮有用的,可以保留 另外关于性能方面,主要还是控件数量决定的,控件的加载真的非常的耗算力,非常容易阻塞ui线程

Lightczx commented 3 years ago

可以直接把那个页面改成一个小flyout(HandyControl里面应该是Popup?),只包含右侧的文字内容 鼠标悬浮在角色图标上时就直接弹出,比现在这个导航到新page好多了

Scighost commented 3 years ago

这个方法不错,记下了

Scighost commented 3 years ago

还有修改建议吗,没有的话就我上传更新了