diff --git a/KVMControl.cs b/KVMControl.cs index 447bc7c..e20d9d9 100644 --- a/KVMControl.cs +++ b/KVMControl.cs @@ -249,6 +249,7 @@ namespace MeshCentralRouter // Update extra displays if needed Rectangle r = new Rectangle((int)tile_x, (int)tile_y, newtile.Width, newtile.Height); Rectangle rx = new Rectangle(r.X + displayOrigin.X, r.Y + displayOrigin.Y, r.Width, r.Height); + //Console.WriteLine(rx.ToString()); if (ScreenAreaUpdated != null) ScreenAreaUpdated(desktop, rx); if (displayCrop == Rectangle.Empty) diff --git a/KVMViewer.cs b/KVMViewer.cs index 6bc7eb9..249f39a 100644 --- a/KVMViewer.cs +++ b/KVMViewer.cs @@ -90,7 +90,9 @@ namespace MeshCentralRouter private void KvmControl_ScreenAreaUpdated(Bitmap desktop, Rectangle r) { if (extraDisplays == null) return; - foreach (KVMViewerExtra x in extraDisplays) { x.UpdateScreenArea(desktop, r); } + foreach (KVMViewerExtra x in extraDisplays) { + if (x != null) { x.UpdateScreenArea(desktop, r); } + } } private void Parent_ClipboardChanged() diff --git a/KVMViewerExtra.cs b/KVMViewerExtra.cs index faea83a..1ea595e 100644 --- a/KVMViewerExtra.cs +++ b/KVMViewerExtra.cs @@ -54,8 +54,17 @@ namespace MeshCentralRouter if (kvmControl.displayCrop.IntersectsWith(r) == false) return; Rectangle r2 = new Rectangle(r.X, r.Y, r.Width, r.Height); r2.Intersect(kvmControl.displayCrop); - //kvmControl.Repaint(new Rectangle(r2.X - kvmControl.displayCrop.X, r2.Y - kvmControl.displayCrop.Y, r2.Width, r2.Height)); - kvmControl.Repaint(null); + kvmControl.desktop = desktop; + if (kvmControl.ScaleFactor == 1) + { + Rectangle r3 = new Rectangle(r2.X - kvmControl.displayCrop.X, r2.Y - kvmControl.displayCrop.Y, r2.Width, r2.Height); + kvmControl.Repaint(r3); + } + else + { + Rectangle r3 = new Rectangle((int)(((double)(r2.X - kvmControl.displayCrop.X)) / kvmControl.ScaleFactor) - 2, (int)(((double)(r2.Y - kvmControl.displayCrop.Y)) / kvmControl.ScaleFactor) - 2, (int)(((double)r2.Width) / kvmControl.ScaleFactor) + 4, (int)(((double)r2.Height) / kvmControl.ScaleFactor) + 4); + kvmControl.Repaint(r3); + } } private void KvmControl_DesktopSizeChanged(object sender, EventArgs e)