Bug #3806
openText does not display properly on one monitor when using two monitors with different DPI scaling factors
0%
Description
This was initially noticed on 3.0 but I recreated the issue on 3.1 portable as well.
Problem: When using multiple monitors with different high DPI scaling factors, text will display normally (crisply) on one (whichever one has been set as the 'main display' since last reboot) and will be blurry when moved to the other.
Expected: Text displays normally and crisply on all displays.
Reproduction:Ingredients: AdiIRC, two monitors, Windows 10
Steps:
- Go to Windows 10's "Display" settings, and under 'Scale and Layout', confirm that the two monitors have different DPI scaling factors.
- Reboot to apply any DPI changes if necessary.
- Open up AdiIRC and observe how the text appears.
- Move AdiIRC fully to the other monitor and observe the text there.
Per-Monitor DPI support was introduced in Windows 8.1, so the issue may also be present there, but I am unable to test this at the moment.
Updated by Per Amundsen almost 7 years ago
- Status changed from New to Assigned
I tested using one monitor with 150% scaling and one with 125% scaling, moving between the monitor does not seems to cause any blurriness on my end, I am using windows 10 build 1709.
I also tested using 150% and a native 100% without any problems.
Updated by Per Amundsen almost 7 years ago
The windows anniversary update added a new <dpiAwareness> flag, I compiled a version using this at https://adiirc.com/build/AdiIRC64.exe, does that one work better for you?
Updated by Ashen Blue almost 7 years ago
I'm also on 1709. The issue arises specifically with the main display at 1920x1080 at 100% and a monitor at 3840 x 2160 at 250%. It's possible that having different resolutions might be part of the issue, but I don't have monitors with identical native resolutions to test that right now. It could also be that the relatively exaggerated numbers I'm working with make the bitmap scaling effect more apparent.
The build you submitted makes the text in Windows default widgets/graphics (eg a window's titlebar) look perfectly crisp and clear, but other text appears to still be blurry. This same behavior can be forced in the original build of 3.1 by changing its DPI compatibility setting to "System (Enhanced)". I've attached screenshots to hopefully illustrate the difference.
3.1 Beta, 1920x1080 at 100%:
https://i.imgur.com/5dVyTOQ.png
3.1 Beta, 3840x2160 at 250%:
https://i.imgur.com/dZIP0hp.png
3.1 Beta Special Build, 1920x1080 at 100%:
https://i.imgur.com/VgP8CwV.png
3.1 Beta Special Build, 3840x2160 at 250:
https://i.imgur.com/ocAmSxT.png
In this last picture, the "blurriness" in the rest of the picture not being present in the title bar is especially clear.
Updated by Per Amundsen almost 7 years ago
Oh, I see it now as well, the blur was not so obvious to me at first.
There are 3 options that controls how DPI scaling works in .NET. (4 actually)
I have tried enabling all combinations of them, but none of them seem to work satisfactory, either it blurs, or it renders at the main monitor DPI causing sharp but extremely small text, or it scales some controls which are using GDI, but not GDI+.
.NET 4.7 seems to have some fixes for this according to https://blogs.msdn.microsoft.com/dotnet/2017/04/05/announcing-the-net-framework-4-7/, unfortunately I can't make the switch to 4.7 just yet.
Updated by Ashen Blue almost 7 years ago
Using winforms, per-monitor DPI support was only actually added in 4.7 as well. Once 4.7 comes along, setting dpiAwareness to PerMonitorV2 will magically fix all the DPI issues per https://docs.microsoft.com/en-us/dotnet/framework/winforms/high-dpi-support-in-windows-forms but until then, you'll probably have to wontfix this one.
Thank you for all the help--on a personal note AdiIRC quickly became my client of choice a few weeks back and has served me well ever since, and I always appreciate a dev taking an interest in bug reports.
Updated by Per Amundsen almost 7 years ago
Your welcome and I'm glad you found AdiIRC useful :)
Gonna keep it open as a reminder to myself.