WPF サムネイル表示アプリ試作メモ4「動画のサムネイルに枠を表示」

コンピュータ

動画ファイルもサムネイル表示出来るようになりましたが、

画像ファイルとの区別をするために枠を付けます。

ソースコード

まずXAMLでサムネイル画像の表示領域にBorderで枠を付けます。
基本は透明で見えませんがすが、ThumbBorderBrushをバインディングすることで特定のファイルには色を付ける作戦です。
MainWindow.xaml

            <ListView.ItemTemplate>
                <DataTemplate>
                    <Border
                        BorderThickness="4"
                        CornerRadius="6"
                        BorderBrush="{Binding ThumbBorderBrush}"
                        Background="Transparent"
                        Margin="5">
                        <StackPanel Margin="5" Width="256">
                            <Image
                                Source="{Binding Thumb}"
                                Width="256" Height="256"
                                Stretch="None" />
                            <TextBlock
                                Text="{Binding DisplayName}"
                                TextAlignment="Center"
                                TextWrapping="Wrap" />
                        </StackPanel>
                    </Border>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

バインディング元のクラスにThumbBorderBrushプロパティを追加。
コンストラクタで、拡張子を判定し、
コンテナ系と動画系で異なる色のブラシをセット
FileItem.cs

    public Brush? ThumbBorderBrush {get; set;} = null;

    public FileItem(string path, string displayName, ImageSource icon, BitmapSource? thumb)
    {
        Path = path;
        DisplayName = displayName;
        Icon = icon;
        Thumb = thumb;

        if (ImageMagicHelper.IsSupportedContainer(path))
        {
            ThumbBorderBrush = Brushes.YellowGreen;
        }
        if (ImageMagicHelper.IsSupportedMovie(path))
        {
            ThumbBorderBrush = Brushes.OrangeRed;
        }
    }

これだけで枠が出来上がります。

実行例


動画ではサムネイルに切り替えると一瞬でサムネイル表示に成りますが、
これは、キャッシュが効いているせいで、
実際は、時間を掛けて少しずつサムネイル画像が表示される感じです。

感想

コメント