This is what makes you say, "There must be a better way."
My solution for this was to declare a global ScalingFactor variable bound to the current screen resolution. Then the dimensions of each visual element were multiplied by this coefficient.
So, if I developed a form for resolution A, and resolution B will be 1.2 times larger, the width of window A will be * 1.2, the fonts will be fontSize * 1.2, the size of the text box will be * 1.2.
Not fun.
There may be third-party tools that you can buy and will perform this scaling.
Another thing to check before starting any of these roads is actually the screen resolution or dpi settings that make it look bad. Usually a higher resolution will only reduce the size of the image, but atypical dpi, for example, when the user selects "large fonts", will be detrimental.
source share