... The stuff you mention regarding OS independent screen drawing tools, that's been implemented in the last year in .NET Core. .NET Core is Microsoft's open source rewrite of the .NET framework and they've committed to that becoming mainline going forward (they're scrapping support for the closed source version in the next year or two) and they've now ported WinForms and WPF to it - the two options you have for GUI development.
That comment (from grandparent) is not completely correct: it is true that WPF and WinForms will be made to run on .NET 5 (which will be the successor .NET framework both for .NET Full 4.8 and .NET Core 3.x), but AFAIK both WPF and WinForms in .NET 5 will still only be available on Windows... so it will not become an OS independent gui framework. If you want a cross-platform GUI on .NET, I think your best option would be Avalonia (https://avaloniaui.net), which is inspired by WPF.
I've always loved Java, but started using C# through work. In the recent years, I actually started to prefer C# above Java because of, on the one side, Microsoft making C# cross-platform and open-sourcing a lot in .NET (the roslyn compiler, .net core, asp.net core, ...) and, on the other side, Oracle taking ownership of Java and going after Google. Purely regarding the language itself, I actually came to like C# more than Java. My preferred OS is linux and I develop on Linux using JetBrains Rider, which is an amazing C# IDE.
If you'd use C# on non-Windows, then I'd recommend to start using .NET Core and avoiding mono. I have a lot of respect for mono, but only use it if you have no other choice: it is very very slow compared to .NET Core and even though it's impressive how compatible it is with .NET full, it is not completely compatible. If you build your project from the start to run on mono, it'll likely work, but if that's not the case, I think you'll run into problems.