【问题标题】:c# Drawing square to highlight mouse selection areac#绘制正方形以突出鼠标选择区域
【发布时间】:2020-08-16 04:53:43
【问题描述】:

我正在使用 c# 为部分桌面应用程序构建屏幕截图。 Z keyup 事件开始绘制红色矩形,鼠标移动到下一个点,然后再次 Z keyup 停止绘制红色框。

问题在于它会在笔记本电脑等速度较慢的计算机上运行非常缓慢或崩溃。我做错了什么,我试图修复它一个月,但它没有奏效。帮帮我,请。另外,有没有更好的方法或库来解决它?

   private void step1()
        {            
                start = true;
                mypic.pics = mypic.capturepic(Cursor.Position);
                Bmp = new Bitmap(mypic.pics);

              timer1.Enabled = true;
              timer1.Start();
        }
        private void draw_rec_repeat()
        {
            InvalidateRect(IntPtr.Zero, IntPtr.Zero, true);
            IntPtr desktopPtr = GetDC(IntPtr.Zero);
            using (System.Drawing.Graphics gg = System.Drawing.Graphics.FromHdc(desktopPtr))
            {
                Rectangle bb = DrawRec(Cursor.Position.X, Cursor.Position.Y, desktopPtr, gg);
                gg.DrawRectangle(new Pen(Color.Red, 3), bb);
            }            
            ReleaseDC(this.Handle, desktopPtr);                                                      
        }



    private void timer1_Tick(object sender, EventArgs e)
        {       
            draw_rec_repeat();
        }

【问题讨论】:

  • 我最好的猜测是截取整个桌面并将其放入最大化形式的图片框,然后使用图片框的绘制事件绘制矩形,但我不知道这是否更快......

标签: c# graphics mouse selection draw


【解决方案1】:

C# How to Draw a Rubber Band Selection Rectangle on Panel, like one used in Windows Explorer?

它有帮助。屏幕被保存然后粘贴到最大化的图片框中。然后我在双缓冲图片框控件上绘制矩形。

另外,我尝试使用自定义 timer.interval,以便笔记本电脑速度慢的用户可以减慢绘图时间。

就是这样。

【讨论】:

    猜你喜欢
    • 2012-08-16
    • 2014-09-04
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    相关资源
    最近更新 更多