Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
        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;
            }
        }