internal void SendDesktopImageClip(IRemoteDesktopClientInternal service, DesktopImageClipArgs e) { if (LOGGER.IsDebugEnabled) { LOGGER.Debug(string.Format("REMOTE_CLIENT, service sent desktop clip refresh. X: {0}, Y: {1}. Size: {2}", e.Location.X.ToString(), e.Location.Y.ToString(), e.ImageData.Length.ToString())); } DrawDesktopClip(e); }
private void DrawDesktopClip(DesktopImageClipArgs e) { if (this.InvokeRequired) { DrawDesktopClipHandler d = new DrawDesktopClipHandler(DrawDesktopClip); try { ((RemoteDesktopWinFormsControl)d.Target).Invoke(d, e); } catch (Exception) { } return; } using (MemoryStream ms = new MemoryStream(e.ImageData)) { ms.Position = 0; using (Bitmap clip = Bitmap.FromStream(ms) as Bitmap) { using (Graphics g = Graphics.FromImage(mRemoteDesktopImage)) { g.DrawImage(clip, e.Location); } } ms.SetLength(0); } // egérnek látszódnia kell a felületen? IRemoteDesktopClientInternal proxy = mProxy; if (proxy != null && proxy.LastMousePosX >= mVisibleArea.StartX && proxy.LastMousePosX <= mVisibleArea.EndX && proxy.LastMousePosY >= mVisibleArea.StartY && proxy.LastMousePosY <= mVisibleArea.EndY) { // egér berajzolása a felületre DrawMouse(); } else { pbClient.Image = mRemoteDesktopImage; } }