Scaling on 4K Displays

jbilleter
Posts: 87
Joined: Fri Oct 15, 2010 6:49 pm

Scaling on 4K Displays

Post by jbilleter » Thu Mar 10, 2016 11:20 am

2.8.10366 OEM
Any
Windows 10 Pro

I recently purchased a new laptop with a 4K display. PowerVision does not scale correctly on a 4K display. I had to go into the Properties of the program and one the Compatibility tab, select 'Disable display scaling on high DPI settings'. This makes it visible on the 4K display, but when I have use an extended monitor that has a 1080p resolution, PowerVision is extremely large.

With more and more 4K displays on new machines, this ought to be reviewed for the next release.
Jacob Billeter
Staff Engineer - MurCal, Inc.
stalley
Enovation Controls Development
Enovation Controls Development
Posts: 618
Joined: Tue Mar 18, 2014 12:57 pm

Re: Scaling on 4K Displays

Post by stalley » Thu Mar 10, 2016 11:40 am

Hi Jacob,

I think we all agree that the PowerVision UI is aging and needs to be updated to work with newer computer display technology. It is in the list of major updates to be done!

I appreciate you bringing this up here. There are other symptoms you might see if the computer display is set to something other than 100% scale. PowerVision text will just be outlines or missing.
Sara Talley
Software Engineer
Enovation Controls
jbilleter
Posts: 87
Joined: Fri Oct 15, 2010 6:49 pm

Re: Scaling on 4K Displays

Post by jbilleter » Thu Mar 10, 2016 12:09 pm

The 4K text scaling was set to 250% when I first installed and opened PowerVision. The text outlines were really skewed and illegible. Once I changed the setting in the Properties of the program (right click -> properties), The program is visible on the 4K display and looks really nice. Issue now is when dragged over to the 1080p display with 100% scaling. It ends up looking enormous. For now, I can make it work, but look forward to the new release. Thanks.
Jacob Billeter
Staff Engineer - MurCal, Inc.
jbilleter
Posts: 87
Joined: Fri Oct 15, 2010 6:49 pm

Re: Scaling on 4K Displays

Post by jbilleter » Fri Mar 11, 2016 10:48 am

Hi Sara,

I think I still might have an issue with PowerVision. When I attempt to open a configuration, I get a bug and it forces me to close. I was able to copy the error message. Is this due to the 4K display, or is there something else?

Error Message:

Height must be greater than 0px.

PowerVision Configuration Studio Version:

2.8.10366

Environment:

Microsoft Windows NT 6.2.9200.0 Is64Bit: True

Error Location:

at System.Windows.Forms.DataVisualization.Charting.ChartPicture.InspectChartDimensions(Int32 width, Int32 height)
at System.Windows.Forms.DataVisualization.Charting.ChartPicture.set_Height(Int32 value)
at System.Windows.Forms.DataVisualization.Charting.Chart.OnResize(EventArgs e)
at System.Windows.Forms.Control.OnSizeChanged(EventArgs e)
at System.Windows.Forms.Control.UpdateBounds(Int32 x, Int32 y, Int32 width, Int32 height, Int32 clientWidth, Int32 clientHeight)
at System.Windows.Forms.Control.UpdateBounds(Int32 x, Int32 y, Int32 width, Int32 height)
at System.Windows.Forms.Control.SetBoundsCore(Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified)
at System.Windows.Forms.Control.System.Windows.Forms.Layout.IArrangedElement.SetBounds(Rectangle bounds, BoundsSpecified specified)
at System.Windows.Forms.Layout.DefaultLayout.xLayoutDockedControl(IArrangedElement element, Rectangle newElementBounds, Boolean measureOnly, Size& preferredSize, Rectangle& remainingBounds)
at System.Windows.Forms.Layout.DefaultLayout.LayoutDockedControls(IArrangedElement container, Boolean measureOnly)
at System.Windows.Forms.Layout.DefaultLayout.xLayout(IArrangedElement container, Boolean measureOnly, Size& preferredSize)
at System.Windows.Forms.Layout.DefaultLayout.LayoutCore(IArrangedElement container, LayoutEventArgs args)
at System.Windows.Forms.Layout.LayoutEngine.Layout(Object container, LayoutEventArgs layoutEventArgs)
at System.Windows.Forms.Control.OnLayout(LayoutEventArgs levent)
at System.Windows.Forms.ScrollableControl.OnLayout(LayoutEventArgs levent)
at System.Windows.Forms.Control.PerformLayout(LayoutEventArgs args)
at System.Windows.Forms.Control.System.Windows.Forms.Layout.IArrangedElement.PerformLayout(IArrangedElement affectedElement, String affectedProperty)
at System.Windows.Forms.Control.OnResize(EventArgs e)
at System.Windows.Forms.Panel.OnResize(EventArgs eventargs)
at System.Windows.Forms.Control.OnSizeChanged(EventArgs e)
at System.Windows.Forms.Control.UpdateBounds(Int32 x, Int32 y, Int32 width, Int32 height, Int32 clientWidth, Int32 clientHeight)
at System.Windows.Forms.Control.UpdateBounds(Int32 x, Int32 y, Int32 width, Int32 height)
at System.Windows.Forms.Control.SetBoundsCore(Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified)
at System.Windows.Forms.Control.System.Windows.Forms.Layout.IArrangedElement.SetBounds(Rectangle bounds, BoundsSpecified specified)
at System.Windows.Forms.Layout.DefaultLayout.xLayoutDockedControl(IArrangedElement element, Rectangle newElementBounds, Boolean measureOnly, Size& preferredSize, Rectangle& remainingBounds)
at System.Windows.Forms.Layout.DefaultLayout.LayoutDockedControls(IArrangedElement container, Boolean measureOnly)
at System.Windows.Forms.Layout.DefaultLayout.xLayout(IArrangedElement container, Boolean measureOnly, Size& preferredSize)
at System.Windows.Forms.Layout.DefaultLayout.LayoutCore(IArrangedElement container, LayoutEventArgs args)
at System.Windows.Forms.Layout.LayoutEngine.Layout(Object container, LayoutEventArgs layoutEventArgs)
at System.Windows.Forms.Control.OnLayout(LayoutEventArgs levent)
at System.Windows.Forms.ScrollableControl.OnLayout(LayoutEventArgs levent)
at System.Windows.Forms.Control.PerformLayout(LayoutEventArgs args)
at System.Windows.Forms.Control.System.Windows.Forms.Layout.IArrangedElement.PerformLayout(IArrangedElement affectedElement, String affectedProperty)
at System.Windows.Forms.Control.OnResize(EventArgs e)
at System.Windows.Forms.Panel.OnResize(EventArgs eventargs)
at System.Windows.Forms.Control.OnSizeChanged(EventArgs e)
at System.Windows.Forms.Control.UpdateBounds(Int32 x, Int32 y, Int32 width, Int32 height, Int32 clientWidth, Int32 clientHeight)
at System.Windows.Forms.Control.UpdateBounds(Int32 x, Int32 y, Int32 width, Int32 height)
at System.Windows.Forms.Control.SetBoundsCore(Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified)
at System.Windows.Forms.Control.System.Windows.Forms.Layout.IArrangedElement.SetBounds(Rectangle bounds, BoundsSpecified specified)
at System.Windows.Forms.Layout.DefaultLayout.xLayoutDockedControl(IArrangedElement element, Rectangle newElementBounds, Boolean measureOnly, Size& preferredSize, Rectangle& remainingBounds)
at System.Windows.Forms.Layout.DefaultLayout.LayoutDockedControls(IArrangedElement container, Boolean measureOnly)
at System.Windows.Forms.Layout.DefaultLayout.xLayout(IArrangedElement container, Boolean measureOnly, Size& preferredSize)
at System.Windows.Forms.Layout.DefaultLayout.LayoutCore(IArrangedElement container, LayoutEventArgs args)
at System.Windows.Forms.Layout.LayoutEngine.Layout(Object container, LayoutEventArgs layoutEventArgs)
at System.Windows.Forms.Control.OnLayout(LayoutEventArgs levent)
at System.Windows.Forms.ScrollableControl.OnLayout(LayoutEventArgs levent)
at System.Windows.Forms.ContainerControl.OnLayout(LayoutEventArgs e)
at System.Windows.Forms.Control.PerformLayout(LayoutEventArgs args)
at System.Windows.Forms.Control.System.Windows.Forms.Layout.IArrangedElement.PerformLayout(IArrangedElement affectedElement, String affectedProperty)
at System.Windows.Forms.Control.OnResize(EventArgs e)
at System.Windows.Forms.UserControl.OnResize(EventArgs e)
at System.Windows.Forms.Control.OnSizeChanged(EventArgs e)
at System.Windows.Forms.Control.UpdateBounds(Int32 x, Int32 y, Int32 width, Int32 height, Int32 clientWidth, Int32 clientHeight)
at System.Windows.Forms.Control.UpdateBounds(Int32 x, Int32 y, Int32 width, Int32 height)
at System.Windows.Forms.Control.SetBoundsCore(Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified)
at System.Windows.Forms.Control.SetBounds(Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified)
at System.Windows.Forms.Control.set_Size(Size value)
Jacob Billeter
Staff Engineer - MurCal, Inc.
jbilleter
Posts: 87
Joined: Fri Oct 15, 2010 6:49 pm

Re: Scaling on 4K Displays

Post by jbilleter » Tue Mar 15, 2016 6:34 pm

Apparently, PowerVision is not the only app with UI issues relating to 4K displays (thanks Google). From what I understand, the issue seems to be that when the program loads, Windows asks if the program is High DPI aware and the program answers "yes". The temporary fix until the newer version is available is to have the program say that it is not DPI aware. This seems to make everything scale properly and makes the program usable again. I can't guarantee anything and all modifications should be done at your own risk.

First you have to have Windows look for an external manifest file by adding a value in the registry.

1. Press Windows Button + R, type “regedit”, and then click OK.
2. Navigate to the following registry subkey:
HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > Windows > CurrentVersion > SideBySide
3. Right-click, select NEW > DWORD (32 bit) Value
4. Type PreferExternalManifest, and then press ENTER.
5. Right-click PreferExternalManifest, and then click Modify.
6. Enter Value Data 1 and select Decimal.
7. Click OK. Exit Registry Editor.

Next, you have to create the manifest file and include it in the program folder. You can create the manifest file, or download the attachment and extract it from the .zip folder and save it to the file location below.

1. Navigate to C:\Program Files (x86)\EnovationControls\PowerVision Configuration Studio 2.8 (OEM)
2. Create a manifest file using Notepad text editor and name it PowerVision.Executable.exe.manifest
3. Copy below text into manifest file and save file


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">

<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0" processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*">
</assemblyIdentity>
</dependentAssembly>
</dependency>

<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.VC90.CRT"
version="9.0.21022.8"
processorArchitecture="amd64"
publicKeyToken="1fc8b3b9a1e18e3b">
</assemblyIdentity>
</dependentAssembly>
</dependency>

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>

<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<ms_windowsSettings:dpiAware xmlns:ms_windowsSettings="http://schemas.microsoft.com/SMI/2005/W ... s:dpiAware>
</asmv3:windowsSettings>
</asmv3:application>

</assembly>
Attachments
PowerVision.Executable.exe.zip
(673 Bytes) Downloaded 11 times
Jacob Billeter
Staff Engineer - MurCal, Inc.
stalley
Enovation Controls Development
Enovation Controls Development
Posts: 618
Joined: Tue Mar 18, 2014 12:57 pm

Re: Scaling on 4K Displays

Post by stalley » Thu Mar 17, 2016 8:48 am

Hello Jacob,

Thank you for investigating and sharing your information.

It sounds as though a similar approach was tried some time ago in the PowerVision Configuration Studio installers and didn't work consistently in tests.

It may be that Windows 10 behaves better.

The ultimate fix is to redesign PowerVision Configuration Studio with a platform that will scale properly for all displays (Windows Presentation Foundation) instead of Windows Forms.

Thanks again!
Sara Talley
Software Engineer
Enovation Controls
jbilleter
Posts: 87
Joined: Fri Oct 15, 2010 6:49 pm

Re: Scaling on 4K Displays

Post by jbilleter » Tue Sep 20, 2016 4:44 pm

Hello Sara,

Is there any way you guys can add the 4K resolution fix to PowerVision 2.3 program? I'm still working with PV750s and still use that version for some customers. The "fix" I did before seems to get "repaired" by Windows during automatic updates. It took me a while to figured that part out. The fix was made for 2.8 for hi-res screens, and it would be helpful if 2.3 got a little makeover too.

Thank you,

Jacob
Jacob Billeter
Staff Engineer - MurCal, Inc.
stalley
Enovation Controls Development
Enovation Controls Development
Posts: 618
Joined: Tue Mar 18, 2014 12:57 pm

Re: Scaling on 4K Displays

Post by stalley » Wed Sep 21, 2016 7:33 am

Hello Jacob,

That's unfortunate that the Windows update wipes out your change.

I can put your request into our log. Since it is 2.3, I wouldn't hold my breath that it will be done. I don't see anything in our backlog for 2.3. Sometimes if we get enough bugs to fix/updates we will get some time alotted to do the changes.

Thanks for letting us know about the registry update.
Sara Talley
Software Engineer
Enovation Controls