LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Text Rendering in LabVIEW

I wish NI provided an easier solution for this. I'd trade Nigel for non-fuzzy windows and more modern and flexible controls.

0 Kudos
Message 11 of 16
(160 Views)

@FlatCat wrote:

I wish NI provided an easier solution for this. I'd trade Nigel for non-fuzzy windows and more modern and flexible controls.


If you're talking about the manifest, it's here in the Build Properties, and it seems to work, indeed:

2026-10-11_170947.png

So, the whole part about using mt.exe and Python/Rust code to embed the manifest is not applicable. There's a simpler solution (the manifest itself was shown in the comment above).

And, by the way, this won't be appended to the existing manifest; it will replace it completely:

2026-10-11_171704.png

good to know.

Message 12 of 16
(148 Views)

Cool! I did look through the Build Spec for a mention of manifest files, but didn't inspect the Security section thoroughly enough. I was thinking more along the lines of a checkbox in the build spec that says something like "handle HiDPI more gracefully", and which would put the relevant text into the manifest file. But this at least goes part of the way. 

0 Kudos
Message 13 of 16
(133 Views)

The manifest using PerMonitorV2 would require a lot of programming to have the app scale properly?

 

NI's recommendation is to set the Scaling performed by to System (Enhanced). Then you don't have to do anything in the code. Google tells me that this is the manifest for that:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:application>
<asmv3:windowsSettings>
<!-- Tells Windows that the app is not DPI-aware, forcing OS bitmap scaling so the UI doesn't become microscopically small -->
<dpiAware xmlns="http://microsoft.com">false</dpiAware>

<!-- Enables GDI scaling, which is the internal Windows name for the "System (Enhanced)" compatibility mode -->
<gdiScaling xmlns="http://microsoft.com">true</gdiScaling>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>

 

<dpiAware>false</dpiAware>: Tells Windows that LabVIEW is pixel-based and cannot scale itself. Windows handles the layout scaling so your buttons and windows stay the correct physical size.

 

<gdiScaling>true</gdiScaling>: This is the magic flag for System (Enhanced). Instead of stretching the UI like a low-res bitmap, Windows dynamically rerenders fonts and standard GDI vector graphics at the monitor's native resolution.

Certified LabVIEW Architect
Message 14 of 16
(64 Views)

@thols wrote:

The manifest using PerMonitorV2 would require a lot of programming to have the app scale properly?

 

NI's recommendation is to set the Scaling performed by to System (Enhanced). Then you don't have to do anything in the code...

 

<gdiScaling>true</gdiScaling>: This is the magic flag for System (Enhanced). Instead of stretching the UI like a low-res bitmap, Windows dynamically rerenders fonts and standard GDI vector graphics at the monitor's native resolution.


If a blurry UI is acceptable, then yes, of course. At first glance, I can't recognize any advantages of GDI scaling, at least visually.
0 Kudos
Message 15 of 16
(17 Views)

NI's recommendation of setting the High DPI override to System Enhanced definitely makes a difference. It's subtle, and yet to my eye makes the UI more crispy and appealing.

The question is how to get the corresponding element, <gdiScaling>true</gdiScaling>, into the built app's internal manifest. I can find the exe's manifest just by searching through the contents of the exe file with a text editor (TotalPE2 doesn't let you copy the manifest text that it shows you). The manifest is quite long, and so I don't imagine you can just replace it with something short that only contains the scaling element. I will try extracting the manifest from the built exe, adding the scaling element to create a new manifest file, and then rebuilding the app using that file in the Embed Manifest File option of the build spec. That is perhaps a naive approach. I can try mt.exe if it doesn't work.

By the way, the built app's manifest contains this:

 

<dpiAware>false</dpiAware>

 

 

 

0 Kudos
Message 16 of 16
(1 View)