Пример #1
0
        /// <summary>
        /// マウスフックの削除
        /// </summary>
        /// <param name="_nCode">現在のフックプロシージャに渡されたnCode</param>
        /// <param name="_wParam">現在のフックプロシージャに渡されたwParam</param>
        /// <param name="_lParam">現在のフックプロシージャに渡されたlParam</param>
        /// <returns>フックチェーン内の次のフックプロシージャの戻り値</returns>
        private IntPtr MouseHookProc(int _nCode, IntPtr _wParam, IntPtr _lParam)
        {
            if (_nCode >= 0 && !m_bClose)
            {
                MouseHook.MouseHookStruct mouseHookStruct = (MouseHook.MouseHookStruct)Marshal.PtrToStructure(_lParam, typeof(MouseHook.MouseHookStruct));
                if (mouseHookStruct != null)
                {
                    String strText = "Scale Capture" + "  x = " + mouseHookStruct.pt.x.ToString("d") + " : y = " + mouseHookStruct.pt.y.ToString("d");
                    lblTitle.Text = strText;

                    float    fScale   = (float)(sliderScale.Value * 0.1);
                    Bitmap   bitmap   = new Bitmap(200, 200);
                    Graphics graphics = Graphics.FromImage(bitmap);
                    graphics.CopyFromScreen(mouseHookStruct.pt.x - 100, mouseHookStruct.pt.y - 100, 0, 0, bitmap.Size);
                    graphics.Dispose();

                    m_scaleImgProc.GoImgProc(bitmap, fScale);

                    pictureBox.Image = m_scaleImgProc.bitmap;
                    pictureBox.Refresh();
                }
            }

            return(MouseHook.CallNextHookEx(m_hHook, _nCode, _wParam, _lParam));
        }
        /// <summary>
        /// 画像処理実行用のタスク
        /// </summary>
        /// /// <param name="_bitmap">ビットマップ</param>
        /// <returns>画像処理の実行結果 成功/失敗</returns>
        private async Task <bool> TaskWorkImageProcessing(Bitmap _bitmap)
        {
            m_tokenSource = new CancellationTokenSource();
            CancellationToken token  = m_tokenSource.Token;
            float             fScale = (float)(sliderScale.Value * 0.1);
            bool bRst = await Task.Run(() => m_scaleImgProc.GoImgProc(_bitmap, fScale, token, this));

            return(bRst);
        }
        /// <summary>
        /// 画像処理実行用のタスク
        /// </summary>
        /// /// <param name="_bitmap">ビットマップイメージ</param>
        /// <returns>画像処理の実行結果 成功/失敗</returns>
        private async Task <bool> TaskWorkImageProcessing(BitmapImage _bitmap)
        {
            m_tokenSource = new CancellationTokenSource();
            CancellationToken token  = m_tokenSource.Token;
            float             fScale = (float)(sliderScale.Value * 0.1);

            PresentationSource source = PresentationSource.FromVisual(this);

            double dDpiX = 96;
            double dDpiY = 96;

            if (source != null)
            {
                dDpiX = 96.0 * source.CompositionTarget.TransformToDevice.M11;
                dDpiY = 96.0 * source.CompositionTarget.TransformToDevice.M22;
            }

            bool bRst = await Task.Run(() => m_scaleImgProc.GoImgProc(_bitmap, fScale, token, this, dDpiX, dDpiY));

            return(bRst);
        }