Avalonia
Avalonia copied to clipboard
Make asset loader understand files tailored per scale, theme and possibly other
Describe the solution you'd like
Usage: Create files:
\Assets\Images\logo.scale-100.png
\Assets\Images\logo.scale-200.png
\Assets\Images\logo.scale-400.png
Reference file in the XAML (or with AssetLoader):
<Image Source="\Assets\Images\logo.png"/>
Asset loader should automatically detect current scaling and choose the correct file.
At minimum should be supported:
- scale
- theme (dark, light, custom)
- layout direction (ltr, rtl) Optional:
- language, should it rely on .NET CurrentCulture?
- device type
Describe alternatives you've considered
OnPlatform markup extension will be part of 11.0. Similarly, developers can define their own custom markup extensions. Media Queries also are planned to solve similar problem. Gladly, asset loader extension, won't conflict with these other features, and can be used together.
See https://github.com/AvaloniaUI/Avalonia/discussions/9291#discussioncomment-3991602
I'm not quite sure if that's a job of the asset loader. Especially since scaling can be changed by moving a window to a different monitor.
I want to be able to disable or enable this feature. So if I have localized images for example, I want to decide when to show which one.
Some of these features intersect the changes I made for #12107.
- Multi-resolution images:
IconBitmap
. The same technique can be applied to any collection of bitmaps, not just icons. - Theme variant switching:
BitmapResourceExtension
and the existing theme variant resource system.