Exemple #1
0
        Color secondTransTextColor;        //第二翻译源结果颜色

        /// <summary>
        /// UI初始化、翻译API初始化、如果是OCR模式则Hook鼠标点击事件
        /// </summary>
        private void InitUI()
        {
            srcTextLabel           = new Label();
            srcTextLabel.AutoSize  = false;
            srcTextLabel.Text      = "等待源文本";
            srcTextLabel.BackColor = TransparencyColor; //背景色透明
            srcTextLabel.TextAlign = ContentAlignment.TopLeft;

            firstTransTextLabel           = new Label();
            firstTransTextLabel.AutoSize  = false;
            firstTransTextLabel.Text      = "等待源文本";
            firstTransTextLabel.BackColor = TransparencyColor; //背景色透明
            firstTransTextLabel.TextAlign = ContentAlignment.TopLeft;

            secondTransTextLabel           = new Label();
            secondTransTextLabel.AutoSize  = false;
            secondTransTextLabel.Text      = "等待源文本";
            secondTransTextLabel.BackColor = TransparencyColor; //背景色透明
            secondTransTextLabel.TextAlign = ContentAlignment.TopLeft;

            LabelInit();
            this.Controls.Add(srcTextLabel);
            this.Controls.Add(firstTransTextLabel);
            this.Controls.Add(secondTransTextLabel);

            this.FormBorderStyle = FormBorderStyle.None;
            this.SizeChanged    += GameTranslateForm_SizeChanged;
            this.FormClosing    += GameTranslateForm_FormClosing;

            BaiduTranslator.BaiduTrans_Init();
            TencentTranslator.TencentTrans_Init();
            TencentOldTranslator.TencentOldTrans_Init();

            if (Common.TransMode == 2)
            {
                BaiduGeneralOCRBasic.BaiduGeneralOCRBasic_Init();

                //初始化钩子对象
                if (hook == null)
                {
                    hook = new GlobalMouseHook();
                    hook.OnMouseActivity += new MouseEventHandler(Hook_OnMouseActivity);
                }

                IsOCRingFlag = false;
                bool r = hook.Start();
                if (r == false)
                {
                    MessageBox.Show("安装钩子失败!");
                }
            }


            TextFontColorInit();

            firstTransAPI = IniFileHelper.ReadItemValue(Environment.CurrentDirectory + "\\settings.ini",
                                                        "Translate_All", "FirstTranslator", "NoTranslate");
            secondTransAPI = IniFileHelper.ReadItemValue(Environment.CurrentDirectory + "\\settings.ini",
                                                         "Translate_All", "SecondTranslator", "NoTranslate");
        }
        private void TestOCRBtn_BtnClick(object sender, EventArgs e)
        {
            BaiduGeneralOCRBasic.BaiduGeneralOCRBasic_Init();
            Image  img = ScreenCapture.GetWindowRectCapture((IntPtr)SelectedHwnd, Common.OCRrec, Common.isAllWindowCap);
            string ret = BaiduGeneralOCRBasic.BaiduGeneralBasicOCR(img, srcLangCombox.SelectedValue);

            MessageBox.Show(ret, "百度OCR结果");
        }
Exemple #3
0
        /// <summary>
        /// 刷新OCR识别,重置窗口结果,使用多线程解决卡顿
        /// </summary>
        public void ReNewOCR()
        {
            if (Common.TransMode == 2)
            {
                if (IsOCRingFlag == false)
                {
                    IsOCRingFlag = true;

                    ThreadPool.QueueUserWorkItem(state =>
                    {
                        Image img  = ScreenCapture.GetWindowRectCapture(Common.OCRWinHwnd, Common.OCRrec, Common.isAllWindowCap);
                        string ret = BaiduGeneralOCRBasic.BaiduGeneralBasicOCR(img, Common.OCRsrcLangCode);

                        string srcText           = "";
                        BaiduOCRresOutInfo oinfo = JsonConvert.DeserializeObject <BaiduOCRresOutInfo>(ret);
                        if (oinfo.words_result != null)
                        {
                            for (int i = 0; i < oinfo.words_result_num; i++)
                            {
                                srcText = srcText + oinfo.words_result[i].words + "\n";
                            }
                        }

                        srcTextLabel.BeginInvoke(new Action(() =>
                        {
                            srcTextLabel.Text = srcText;
                        }));

                        GameTranslateAuto(srcText, Common.srcLang, Common.desLang);
                        firstTransTextLabel.BeginInvoke(new Action(() =>
                        {
                            firstTransTextLabel.Text = firstTransText;
                        }));

                        secondTransTextLabel.BeginInvoke(new Action(() =>
                        {
                            secondTransTextLabel.Text = secondTransText;
                        }));
                        Common.AddHistoryText(srcText, firstTransText, secondTransText);
                    });

                    IsOCRingFlag = false;
                }
            }
            else
            {
                MessageBox.Show("当前处于非OCR翻译模式,无法刷新!", "错误");
            }
        }
Exemple #4
0
        private void BaiduOCRTestBtn_BtnClick(object sender, EventArgs e)
        {
            IniFileHelper.WriteValue(Environment.CurrentDirectory + "\\settings.ini", "BaiduOCR", "APIKEY", BDOCRapikeyTextBox.InputText);
            IniFileHelper.WriteValue(Environment.CurrentDirectory + "\\settings.ini", "BaiduOCR", "SecretKey", BDOCRsecretkeyTextBox.InputText);

            bool ret = BaiduGeneralOCRBasic.BaiduGeneralOCRBasic_Init();

            if (ret == true)
            {
                MessageBox.Show("百度OCR API工作正常", "提示");
            }
            else
            {
                MessageBox.Show("百度OCR API工作异常,请检查填写是否正确", "错误");
            }
        }
Exemple #5
0
        private void BaiduOCRTestBtn_BtnClick(object sender, EventArgs e)
        {
            Common.settings.BDOCR_APIKEY    = BDOCRapikeyTextBox.InputText;
            Common.settings.BDOCR_SecretKey = BDOCRsecretkeyTextBox.InputText;

            bool ret = BaiduGeneralOCRBasic.BaiduGeneralOCRBasic_Init();

            if (ret == true)
            {
                MessageBox.Show("百度OCR API工作正常", "提示");
            }
            else
            {
                MessageBox.Show("百度OCR API工作异常,请检查填写是否正确", "错误");
            }
        }
Exemple #6
0
        private void TestOCRBtn_BtnClick(object sender, EventArgs e)
        {
            srcPic = (Bitmap)ScreenCapture.GetWindowRectCapture((IntPtr)SelectedHwnd, Common.OCRrec, Common.isAllWindowCap);
            if (srcPic == null)
            {
                MessageBox.Show("请选择正确的截屏区域", "警告");
                return;
            }

            Bitmap bm;

            if (PreHandleCheckBox.Checked == true)
            {
                TesseractOCR.thresh = (int)threshTrackBar.Value;
                bm = TesseractOCR.Thresholding(srcPic);
            }
            else
            {
                bm = srcPic;
            }


            if (Common.settings.OCRsource == "BaiduOCR")
            {
                BaiduGeneralOCRBasic.BaiduGeneralOCRBasic_Init();

                string ret = BaiduGeneralOCRBasic.BaiduGeneralBasicOCR(bm, srcLangCombox.SelectedValue);
                MessageBox.Show(ret, "百度OCR结果");
            }
            else
            {
                if (srcLangCombox.SelectedValue == "JAP")
                {
                    TesseractOCR.srcLangCode = "jpn";
                }
                else if (srcLangCombox.SelectedValue == "ENG")
                {
                    TesseractOCR.srcLangCode = "eng";
                }
                TesseractOCR.TesseractOCR_Init();


                string ret = TesseractOCR.OCRProcess(bm);
                MessageBox.Show(ret, "Tesseract离线OCR结果");
            }
        }
Exemple #7
0
        /// <summary>
        /// OCR:鼠标点击的挂载事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void Hook_OnMouseActivity(object sender, MouseEventArgs e)
        {
            if (Common.TransMode == 2)
            {
                //OCR方式下单击鼠标进行更新
                //先判断是单窗口还是全屏幕,如果是单窗口再判断是不是在游戏窗口中点的

                if ((Common.isAllWindowCap == true && Process.GetCurrentProcess().Id != FindWindowInfo.GetProcessIDByHWND(FindWindowInfo.GetWindowHWND(e.X, e.Y))) ||
                    Common.OCRWinHwnd == (IntPtr)FindWindowInfo.GetWindowHWND(e.X, e.Y))
                {
                    if (IsOCRingFlag == false)
                    {
                        IsOCRingFlag = true;
                        ThreadPool.QueueUserWorkItem(state =>
                        {
                            int j = 0;

                            for (; j < 3; j++)
                            {
                                Thread.Sleep(Common.OCRdelay);

                                Image img  = ScreenCapture.GetWindowRectCapture(Common.OCRWinHwnd, Common.OCRrec, Common.isAllWindowCap);
                                string ret = BaiduGeneralOCRBasic.BaiduGeneralBasicOCR(img, Common.OCRsrcLangCode);

                                string srcText           = "";
                                BaiduOCRresOutInfo oinfo = JsonConvert.DeserializeObject <BaiduOCRresOutInfo>(ret);
                                if (oinfo.words_result != null)
                                {
                                    for (int i = 0; i < oinfo.words_result_num; i++)
                                    {
                                        srcText = srcText + oinfo.words_result[i].words + "\n";
                                    }
                                }

                                if (srcText != "")
                                {
                                    GameTranslateAuto(srcText, Common.srcLang, Common.desLang);

                                    srcTextLabel.BeginInvoke(new Action(() =>
                                    {
                                        srcTextLabel.Text = srcText;
                                    }));

                                    firstTransTextLabel.BeginInvoke(new Action(() =>
                                    {
                                        firstTransTextLabel.Text = firstTransText;
                                    }));

                                    secondTransTextLabel.BeginInvoke(new Action(() =>
                                    {
                                        secondTransTextLabel.Text = secondTransText;
                                    }));

                                    Common.AddHistoryText(srcText, firstTransText, secondTransText);

                                    IsOCRingFlag = false;
                                    break;
                                }
                            }

                            if (j == 3)
                            {
                                srcTextLabel.BeginInvoke(new Action(() =>
                                {
                                    srcTextLabel.Text = "[OCR]识别三次均为空,请自行刷新!";
                                }));
                                IsOCRingFlag = false;
                            }
                        });
                    }
                }
            }
        }
        Color secondTransTextColor;     //第二翻译源结果颜色

        /// <summary>
        /// UI初始化、翻译API初始化、如果是OCR模式则Hook鼠标点击事件
        /// </summary>
        private void InitUI()
        {
            srcTextLabel           = new Label();
            srcTextLabel.AutoSize  = false;
            srcTextLabel.Text      = "等待源文本";
            srcTextLabel.BackColor = TransparencyColor; //背景色透明
            srcTextLabel.TextAlign = ContentAlignment.TopLeft;

            firstTransTextLabel           = new Label();
            firstTransTextLabel.AutoSize  = false;
            firstTransTextLabel.Text      = "等待源文本";
            firstTransTextLabel.BackColor = TransparencyColor; //背景色透明
            firstTransTextLabel.TextAlign = ContentAlignment.TopLeft;

            secondTransTextLabel           = new Label();
            secondTransTextLabel.AutoSize  = false;
            secondTransTextLabel.Text      = "等待源文本";
            secondTransTextLabel.BackColor = TransparencyColor; //背景色透明
            secondTransTextLabel.TextAlign = ContentAlignment.TopLeft;

            LabelInit();
            this.Controls.Add(srcTextLabel);
            this.Controls.Add(firstTransTextLabel);
            this.Controls.Add(secondTransTextLabel);

            this.FormBorderStyle = FormBorderStyle.None;
            this.SizeChanged    += GameTranslateForm_SizeChanged;
            this.FormClosing    += GameTranslateForm_FormClosing;

            BaiduTranslator.BaiduTrans_Init();
            TencentTranslator.TencentTrans_Init();
            TencentOldTranslator.TencentOldTrans_Init();

            if (Common.TransMode == 2)
            {
                if (Common.settings.OCRsource == "BaiduOCR")
                {
                    BaiduGeneralOCRBasic.BaiduGeneralOCRBasic_Init();
                }
                else
                {
                    TesseractOCR.TesseractOCR_Init();
                }



                //初始化钩子对象
                if (hook == null)
                {
                    hook = new GlobalMouseHook();
                    hook.OnMouseActivity += new MouseEventHandler(Hook_OnMouseActivity);
                }

                IsOCRingFlag = false;
                bool r = hook.Start();
                if (r == false)
                {
                    MessageBox.Show("安装钩子失败!");
                }
            }


            TextFontColorInit();

            firstTransAPI  = Common.settings.FirstTranslator;
            secondTransAPI = Common.settings.SecondTranslator;
        }