I’m working on a new C# application using WPF. I was under the impression that WPF was vector based and that text/buttons would be drawn in a resolution independent way. When running my application it’s fairly obvious that my application isn’t being drawn using vectors. Some of the text gets fairly blocky, and when using the windows magnifying glass you can see rough edges on everything.
Is there something special I need to do in my application to turn vector drawing on? Or is something wrong with my specific machine? (I’m running Windows Vista x64 with the latest graphics drivers)
The Mangifier accessibility tool in Windows Vista used to be WPF aware. If you zoomed WPF content you would see a sharp magnified version of the app – demonstrating that WPF is indeed vector based.
Tim Sneath, a technology evanglist with Microsoft, blogged about this in 2006:
6/25/2011: Original image gone. Replaced with another image showing same effect.
Greg Schechter answers some commenters on this blog, explaining that magnifier no longer has this trick. Magnifier would specially detect WPF applications, and know how to ask them to render themselves scaled. They removed a dependancy on WPF in magnifier. It seems that magnifier had a dependancy on something in WPF that they wanted to take away or depricate:
So the magnifier used to have it, but no longer.
In the the Channel 9 video "Greg Schechter: Windows Presentation Foundation(WPF) Architecture", Greg Schechter talked about how Magnifier used to provide this functionality.
Magnifier and DWM worked together. Magnifier modified the DWM scene graph to make it’s client area actually point to the desktop root of the scene graph. DWM then knew the magnifier was there and knew how to avoid that horrible "pointing a camcorder at a television showing the camcorder" effect.
Edit: 9/7/2018. From Ian Griffiths’ answer: