Ejemplo n.º 1
0
        /// <summary>
        /// 截一张图用作识别
        /// </summary>
        private void getPicture()
        {
            IntPtr hWnd   = WindowsAPI.FindWindow(null, "夜神模拟器");
            IntPtr hscrdc = WindowsAPI.GetWindowDC(hWnd);

            System.Drawing.Rectangle rect = new System.Drawing.Rectangle();
            WindowsAPI.GetWindowRect(hWnd, out rect);
            System.Drawing.Bitmap bmp = null;
            if (Config.ScreenMode == ScreenMode.Window)
            {
                IntPtr hbitmap = WindowsAPI.CreateCompatibleBitmap(hscrdc, rect.Width, rect.Height);
                IntPtr hmemdc  = WindowsAPI.CreateCompatibleDC(hscrdc);
                WindowsAPI.SelectObject(hmemdc, hbitmap);
                WindowsAPI.PrintWindow(hWnd, hmemdc, 0);
                bmp = System.Drawing.Bitmap.FromHbitmap(hbitmap);
                WindowsAPI.DeleteDC(hmemdc);
            }
            else if (Config.ScreenMode == ScreenMode.Desktop)
            {
                bmp = WindowsAPI.GetDesktop(rect);
            }
            if (File.Exists(TempImages.OrigImagePath))
            {
                File.Delete(TempImages.OrigImagePath);
            }
            if (bmp != null)
            {
                bmp.Save(TempImages.OrigImagePath);

                bmp.Dispose();
                bmp = null;
            }
            WindowsAPI.DeleteDC(hscrdc);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 启动匹配程序
 /// </summary>
 public static void Start()
 {
     windowHand = WindowsAPI.FindWindow(null, "夜神模拟器");
     windowDC   = WindowsAPI.GetWindowDC(windowHand);
     WindowsAPI.GetWindowRect(windowHand, out rect);
     bitmapHand = WindowsAPI.CreateCompatibleBitmap(windowDC, rect.Width, rect.Height);
     bitmapDC   = WindowsAPI.CreateCompatibleDC(windowDC);
 }
Ejemplo n.º 3
0
        static public void StrechBitmap(Graphics gDest, Rectangle rcDest, Rectangle rcSource, Bitmap bitmap)
        {
            // Draw From bitmap
            IntPtr hDCTo = gDest.GetHdc();

            WindowsAPI.SetStretchBltMode(hDCTo, (int)StrechModeFlags.COLORONCOLOR);
            IntPtr hDCFrom = WindowsAPI.CreateCompatibleDC(hDCTo);

            IntPtr hOldFromBitmap = WindowsAPI.SelectObject(hDCFrom, bitmap.GetHbitmap());

            WindowsAPI.StretchBlt(hDCTo, rcDest.Left, rcDest.Top, rcDest.Width, rcDest.Height, hDCFrom,
                                  rcSource.Left, rcSource.Top, rcSource.Width, rcSource.Height, (int)PatBltTypes.SRCCOPY);

            // Cleanup
            WindowsAPI.SelectObject(hDCFrom, hOldFromBitmap);
            gDest.ReleaseHdc(hDCTo);
        }
Ejemplo n.º 4
0
        static public Bitmap GetStrechedBitmap(Graphics gDest, Rectangle rcDest, Bitmap bitmap)
        {
            // Draw To bitmap
            Bitmap   newBitmap = new Bitmap(rcDest.Width, rcDest.Height);
            Graphics gBitmap   = Graphics.FromImage(newBitmap);
            IntPtr   hDCTo     = gBitmap.GetHdc();

            WindowsAPI.SetStretchBltMode(hDCTo, (int)StrechModeFlags.COLORONCOLOR);
            IntPtr hDCFrom = WindowsAPI.CreateCompatibleDC(hDCTo);

            IntPtr hOldFromBitmap = WindowsAPI.SelectObject(hDCFrom, bitmap.GetHbitmap());

            WindowsAPI.StretchBlt(hDCTo, rcDest.Left, rcDest.Top, rcDest.Width, rcDest.Height, hDCFrom,
                                  0, 0, bitmap.Width, bitmap.Height, (int)PatBltTypes.SRCCOPY);

            // Cleanup
            WindowsAPI.SelectObject(hDCFrom, hOldFromBitmap);
            gBitmap.ReleaseHdc(hDCTo);

            return(newBitmap);
        }