Making clickable icons through the display pipeline

Hey @michaelvollrath,

Eto’s co-ordinates are in logical pixels which is not quite compatible when you have different DPIs, or even multiple screens (due to how Windows treats coordinates in system-dpi aware mode vs Eto’s multi-monitor dpi aware mode). To convert a point in physical pixels (e.g. what you get from the viewport, or windows forms APIs, etc), you can use Rhino.UI.EtoExtensions.ToEtoScreen(myPointOrRect). This API was added in Rhino 8.7, and directly calls Eto’s Eto.Forms.WpfHelpers.ToEtoScreen() in Eto.Wpf.dll.

There’s also a Rhino.UI.EtoExtensions.ToSystemDrawingScreen() to convert in the opposite direction, if needed.

Hope this helps!

4 Likes