diff --git a/demo/Directory.Build.props b/demo/Directory.Build.props index 409ca66..74d63f7 100644 --- a/demo/Directory.Build.props +++ b/demo/Directory.Build.props @@ -1,6 +1,6 @@ enable - 11.1.999-cibuild0040425-beta + 11.0.7 diff --git a/demo/Semi.Avalonia.Demo.Drm/Program.cs b/demo/Semi.Avalonia.Demo.Drm/Program.cs index 45d2f66..c690e85 100644 --- a/demo/Semi.Avalonia.Demo.Drm/Program.cs +++ b/demo/Semi.Avalonia.Demo.Drm/Program.cs @@ -1,59 +1,53 @@ -using Avalonia; -using Avalonia.Dialogs; -using Avalonia.Media; -using System; +using System; +using System.Globalization; using System.Linq; using System.Threading; +using Avalonia; -namespace Semi.Avalonia.Demo.Drm +namespace Semi.Avalonia.Demo.Drm; + +class Program { - internal class Program + // Initialization code. Don't use any Avalonia, third-party APIs or any + // SynchronizationContext-reliant code before AppMain is called: things aren't initialized + // yet and stuff might break. + [STAThread] + public static int Main(string[] args) { - // Initialization code. Don't use any Avalonia, third-party APIs or any - // SynchronizationContext-reliant code before AppMain is called: things aren't initialized - // yet and stuff might break. - [STAThread] - public static void Main(string[] args) + var builder = BuildAvaloniaApp(); + + double GetScaling() { - var builder = BuildAvaloniaApp(); - builder.With(new FontManagerOptions - { - FontFallbacks = new[] - { - new FontFallback - { - FontFamily = new FontFamily("Microsoft YaHei") - } - } - }); - if (args.Contains("--drm")) - { - SilenceConsole(); - builder.StartLinuxDrm(args: args, card: "/dev/dri/card0", scaling: 1); - } - else - { - builder.StartWithClassicDesktopLifetime(args); - } + var idx = Array.IndexOf(args, "--scaling"); + if (idx != 0 && args.Length > idx + 1 && + double.TryParse(args[idx + 1], NumberStyles.Any, CultureInfo.InvariantCulture, out var scaling)) + return scaling; + return 1; } - // Avalonia configuration, don't remove; also used by visual designer. - public static AppBuilder BuildAvaloniaApp() - => AppBuilder.Configure() - .UseManagedSystemDialogs() - .UsePlatformDetect() - .With(new Win32PlatformOptions()) - .LogToTrace(); - - private static void SilenceConsole() + if (args.Contains("--drm")) { - new Thread(() => + SilenceConsole(); + return builder.StartLinuxDrm(args: args, card: "/dev/dri/card1", scaling: GetScaling()); + } + + return builder.StartWithClassicDesktopLifetime(args); + } + + // Avalonia configuration, don't remove; also used by visual designer. + public static AppBuilder BuildAvaloniaApp() + => AppBuilder.Configure() + .UsePlatformDetect() + .LogToTrace(); + + private static void SilenceConsole() + { + new Thread(() => { Console.CursorVisible = false; while (true) Console.ReadKey(true); }) { IsBackground = true }.Start(); - } } } \ No newline at end of file diff --git a/demo/Semi.Avalonia.Demo.Drm/使用方法.md b/demo/Semi.Avalonia.Demo.Drm/使用方法.md index efe659a..870b6a2 100644 --- a/demo/Semi.Avalonia.Demo.Drm/使用方法.md +++ b/demo/Semi.Avalonia.Demo.Drm/使用方法.md @@ -1,18 +1,23 @@ # DRM启动步骤 -(Ubuntu18.04Server版本 虚拟机测试OK) +(Ubuntu18.04Server版本 虚拟机测试OK) +(Orange Pi Zero2 Ubuntu20.04-arm64 测试OK) Avalonia官方参考文档:https://docs.avaloniaui.net/docs/next/guides/platforms/rpi/running-on-raspbian-lite-via-drm -1.Linux端运行命令 - sudo apt update - sudo apt upgrade - sudo reboot - sudo apt - get install libgbm1 libgl1 - mesa - dri libegl1 - mesa libinput10 +1.Linux端运行命令 +``` +sudo apt update +sudo apt upgrade +sudo reboot +sudo apt - get install libgbm1 libgl1 - mesa - dri libegl1 - mesa libinput10 +``` -2.安装测试工具测试(出现一个彩色立方体说明环境安装完成) - sudo apt-get install kmscube - sudo kmscube +2.安装测试工具测试(出现一个彩色立方体说明环境安装完成) +``` +sudo apt-get install kmscube +sudo kmscube +``` 3.安装.net运行时(参考网址:https://learn.microsoft.com/zh-cn/dotnet/core/install/linux?WT.mc_id=dotnet-35129-website) @@ -31,7 +36,7 @@ Avalonia官方参考文档:https://docs.avaloniaui.net/docs/next/guides/platfo >Unhandled exception. Avalonia.Markup.Xaml.XamlLoadException: No precompiled XAML found for avares://Semi.Avalonia/Themes/Light/Light.axaml (baseUri: avares://Semi.Avalonia/Themes/Index.axaml), make sure to specify x:Class and include your XAML file as AvaloniaResource 解决方法: - 如果使用Semi发布文件不要裁剪,如果裁剪会报错 +>如果使用Semi发布文件不要裁剪,如果裁剪会报错 2. 报错内容 @@ -41,11 +46,32 @@ Avalonia官方参考文档:https://docs.avaloniaui.net/docs/next/guides/platfo at SkiaSharp.SKImageInfo..cctor() 解决方法: - Linux命令行安装一下 apt-get install -y libfontconfig1 - 参考网址:https://github.com/mono/SkiaSharp/issues/509 +>Linux命令行安装一下 apt-get install -y libfontconfig1 +参考网址:https://github.com/mono/SkiaSharp/issues/509 3. 报错内容 >Permission denied +解决方法: +>sudo chmod +x ./Semi.Avalonia.Demo.Drm + +4. 报错内容 +>Unhandled exception. System.ComponentModel.Win32Exception (95): drmModeGetResources failed +at Avalonia.LinuxFramebuffer.Output.DrmResources..ctor(Int32 fd, Boolean connectorsForceProbe) in /_/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmBindings.cs:line 91 +at Avalonia.LinuxFramebuffer.Output.DrmCard.GetResources(Boolean connectorsForceProbe) in /_/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmBindings.cs:line 171 +at Avalonia.LinuxFramebuffer.Output.DrmOutput..ctor(String path, Boolean connectorsForceProbe, DrmOutputOptions options) in /_/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmOutput.cs:line 60 +at LinuxFramebufferPlatformExtensions.StartLinuxDrm(AppBuilder builder, String[] args, String card, Double scaling, IInputBackend inputBackend) in /_/src/Linux/Avalonia.LinuxFramebuffer/LinuxFramebufferPlatform.cs:line 166 +at Semi.Avalonia.Demo.Drm.Program.Main(String[] args) + 解决方法: - sudo chmod +x ./Semi.Avalonia.Demo.Drm \ No newline at end of file +>`program.cs`的显卡路径错误,可能不是`dev/dri/card1`,看在`dev/dri`目录下有无其他的显卡如`card0`。 + +5. 报错内容 +>Unhandled exception. System.ComponentModel.Win32Exception (2): Couldn't open /dev/dri/card1 +at Avalonia.LinuxFramebuffer.Output.DrmCard..ctor(String ) in /_/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmBindings.cs:line 167 +at Avalonia.LinuxFramebuffer.Output.DrmOutput..ctor(String , Boolean , DrmOutputOptions ) in /_/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmOutput.cs:line 58 +at LinuxFramebufferPlatformExtensions.StartLinuxDrm(AppBuilder, String[], String , Double , IInputBackend ) in /_/src/Linux/Avalonia.LinuxFramebuffer/LinuxFramebufferPlatform.cs:line 166 +at Semi.Avalonia.Demo.Drm.Program.Main(String[]) + +解决办法: +>找不到显卡路径`dev/dri/card1`,可能是显卡挂载到别的文件夹下了,待解决。 \ No newline at end of file diff --git a/demo/Semi.Avalonia.Demo/Assets/WORLD.png b/demo/Semi.Avalonia.Demo/Assets/WORLD.png new file mode 100644 index 0000000..7c5b71f Binary files /dev/null and b/demo/Semi.Avalonia.Demo/Assets/WORLD.png differ diff --git a/demo/Semi.Avalonia.Demo/Pages/CalendarDatePickerDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/CalendarDatePickerDemo.axaml index ca8438f..44a1413 100644 --- a/demo/Semi.Avalonia.Demo/Pages/CalendarDatePickerDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/CalendarDatePickerDemo.axaml @@ -9,6 +9,7 @@ mc:Ignorable="d"> + diff --git a/demo/Semi.Avalonia.Demo/Pages/ComboBoxDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/ComboBoxDemo.axaml index 6fccb90..488a8ff 100644 --- a/demo/Semi.Avalonia.Demo/Pages/ComboBoxDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/ComboBoxDemo.axaml @@ -15,6 +15,13 @@ Mr. 17 Cass + + Ding + Otter + Husky + Mr. 17 + Cass + Ding Otter diff --git a/demo/Semi.Avalonia.Demo/Pages/DataGridDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/DataGridDemo.axaml index 5a36e71..ba7f847 100644 --- a/demo/Semi.Avalonia.Demo/Pages/DataGridDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/DataGridDemo.axaml @@ -13,43 +13,48 @@ mc:Ignorable="d"> - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + + + diff --git a/demo/Semi.Avalonia.Demo/Pages/DatePickerDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/DatePickerDemo.axaml index 2c0e9e9..3baefe4 100644 --- a/demo/Semi.Avalonia.Demo/Pages/DatePickerDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/DatePickerDemo.axaml @@ -9,6 +9,7 @@ mc:Ignorable="d"> + diff --git a/demo/Semi.Avalonia.Demo/Pages/HeaderedContentControlDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/HeaderedContentControlDemo.axaml index 07f7cfe..af62a80 100644 --- a/demo/Semi.Avalonia.Demo/Pages/HeaderedContentControlDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/HeaderedContentControlDemo.axaml @@ -6,7 +6,32 @@ x:Class="Semi.Avalonia.Demo.Pages.HeaderedContentControlDemo"> - + Default Theme + + + + + + + + + + + + + + + GroupBox Theme + Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。 diff --git a/demo/Semi.Avalonia.Demo/Pages/LabelDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/LabelDemo.axaml index 90f2676..5b17250 100644 --- a/demo/Semi.Avalonia.Demo/Pages/LabelDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/LabelDemo.axaml @@ -38,9 +38,9 @@ Secondary Tertiary Quaternary - Warning - Danger - Success + Success + Warning + Danger Mark Code @@ -65,20 +65,20 @@