I'm trying to make my own type of remote desktop for WP7. I have a WCF service that returns an image on what's on the target machine's screen.
Here's the WCF Server Code:
// Method to load desktop image
Bitmap image = new Bitmap( ViewSize.Width, ViewSize.Height );
Graphics g = Graphics.FromImage( image );
g.CopyFromScreen( Position.X, Position.Y, 0, 0, ViewSize );
g.Dispose( );
return image;
// Convert image to byte[] which is returned to client
using ( MemoryStream ms = new MemoryStream( ) )
{
Bitmap image = screenGrabber.LoadScreenImage( );
image.Save( ms, ImageFormat.Jpeg );
imageArray = ms.ToArray( );
}
Here's the code for the WP7 client:
MemoryStream stream = new MemoryStream( data );
BitmapImage image = new BitmapImage( );
image.SetSource( stream );
BackgroundImage.Source = image;
The BackgroundImage variable is an Image control.
I'm noticing this freeze on the emulator after a short while, and will eventually crash from an OutOfMemoryException. This is already pretty slow ( images show up a good half second later than what's on the screen ), and I'm wondering if there's a better/faster way of doing this? Any help would be great. Thanks in advance.