using draw = System.Drawing; ... draw.Image thumb = Browser.WebView.Capture(false); //The original image. using (MemoryStream stream = new MemoryStream()) { thumb.Save(stream, draw.Imaging.ImageFormat.Bmp); stream.Position = 0; stream.Seek(0, SeekOrigin.Begin); BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.StreamSource = stream; bi.CacheOption = BitmapCacheOption.OnLoad; bi.EndInit(); Thumbnail.Source = bi; //The image element. thumb.Dispose(); }
08 October 2014
WPF - Use a System.Drawing.Image as ImageSource
I had a System.Drawing.Image thumbnail that I wanted to use as the ImageSource of an Image element in WPF. The following code – compiled with some help – did the trick:
06 October 2014
.net - Discretely perform a mouse click
For an application I needed to perform a mouse click on a control in a way the user wouldn't even notice it. This was achieved as follows:
First the following Windows functions need to be imported. I've put these in a static class called "OS".
[StructLayout(LayoutKind.Sequential)] public struct Win32Point { public Int32 X; public Int32 Y; }; [DllImport("user32.dll")] public static extern bool GetCursorPos(ref Win32Point pt); [DllImport("user32.dll")] public static extern bool SetCursorPos(int x, int y); [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
The control in question is hidden. On it's load event this takes place:
OS.Win32Point pos = new OS.Win32Point(); OS.GetCursorPos(ref pos); //Gets the current mouse position. int x = ((int)Left + (int)Width) - 220; int y = ((int)Top + (int)Height) - 35; OS.SetCursorPos(x, y); //Moves the mouse the where I need my click. Browser.Visibility = Visibility.Visible; //Makes the control visible. OS.mouse_event(0x02 | 0x04, 0, 0, 0, 0); //Performs the click. Task.Run(async delegate { //Introduces a short delay to avoid that the mouse moves back before the click occures. await Task.Delay(100); //.net framework 4.5 is needed to delay it like this. OS.SetCursorPos(pos.X, pos.Y); //Moves the mouse back to it's original position. });
Subscribe to:
Posts (Atom)