non-uniform border support
Closed this issue · 0 comments
Only BorderThickness=1 is supported.
I have a branch tomlm/nonUniformBorder which tried to implement non-uniform border thickneses (ie: 1 0 1 1).
Essentially to do this avalonia switches to a StreamGeometry implementation which gathers up multiple line
strokes into a single geometry. I implemented all of that stuff but much to my dismay I discovered Avalonia
is very loose on single pixel variations
With a normal high DPI screen you never see it, but with a Char based UI an off by one is radically wrong.
I spent about 3 days trying to hack a way to correct the errors, but basically, but there doesn't seem to be a
strong correlation to when errors creep into the values.
It's an avalonia bug. Avalonia bug AvaloniaUI/Avalonia#17752 filed
This is what native avalonia renders for thickness 0 strokes. You can see it the layout of the rectangle is off by one or two pixels and the stroke doesn't align. That's exactly what it's drawing for us, only 1 pixel = 1 char so the error is crazy.
image
When this bug is fixed this branch should work.
This is what it looks like when the pixel errors becomes character scaled errors: