sgbyg 发表于 2024-5-24 19:20

自己动手开发的小工具 记录编程之路

https://pic.imgdb.cn/item/665071d2d9c307b7e984fd34.png
发现一个up主使用的工具 里面的图片采集功能挺有意思 作为一名热爱coding的技术小白,我立刻就萌生了自己也动手开发一个类似工具的想法。
https://pic.imgdb.cn/item/66507358d9c307b7e9874a9d.png


    void UpdateScreen(object state, EventArgs e) {
                lock (lockObject) {
                        if (string.IsNullOrEmpty(textBox1.Text) && string.IsNullOrEmpty(textBox2.Text)) {
                                btnStartCapture.Text = "开始截图";
                                timer.Tick -= new EventHandler(UpdateScreen);
                                BtnStartCapture_Flag = !BtnStartCapture_Flag;
                                MessageBox.Show("未选择截图方式", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                return;
                        }
                       
                        if (isHandleMode){
                                RECT rect2;
                                GetWindowRect(hWnd, out rect2);
                                int width = rect2.Right - rect2.Left;
                                int height = rect2.Bottom - rect2.Top;
                               
                                IntPtr hdcWindow = GetWindowDC(hWnd);
                                IntPtr hdcCompatible = CreateCompatibleDC(hdcWindow);
                                IntPtr hBitmap = CreateCompatibleBitmap(hdcWindow, width, height);

                                SelectObject(hdcCompatible, hBitmap);
                                BitBlt(hdcCompatible, 0, 0, width, height, hdcWindow, 0, 0, 0x00CC0020); // CAPTUREBLT flag to capture layered windows

                                img = Image.FromHbitmap(hBitmap);

                                if (picBox.InvokeRequired) {
                                        picBox.Invoke((MethodInvoker)delegate {
                                                picBox.Image = img;
                                        });
                                } else {
                                        picBox.Image = img;
                                }
                               
                                DeleteObject(hBitmap);
                                DeleteDC(hdcCompatible);
                                DeleteDC(hdcWindow);
                        } else {
                                using (Graphics g = Graphics.FromImage(img)) {
                                        g.CopyFromScreen(Point.Empty, Point.Empty, img.Size);
                                }

                                if (picBox.InvokeRequired) {
                                        picBox.Invoke((MethodInvoker)delegate {
                                                picBox.Image = img;
                                        });
                                } else {
                                        picBox.Image = img;
                                }
                        }
                       
                        filePath = string.Format("images/screenshot_{0}.{1}", captureCount, format);
                        img.Save(filePath);
                       
                        if (captureCount == int.Parse(textBox4.Text)) {
                                btnStartCapture.Text = "开始截图";
                                timer.Tick -= new EventHandler(UpdateScreen);
                                BtnStartCapture_Flag = !BtnStartCapture_Flag;
                                MessageBox.Show("已完成", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
            captureCount++;
                }
    }


下载 ---> https://wwz.lanzoue.com/ivvi31zmobze    解压密码为 52pj





lastmu 发表于 2024-5-24 19:42

应该是一个连续截图的小工具,挺好。

haoge101 发表于 2024-5-24 20:06

太牛了楼主,真羡慕你们这些技术人

long88888888 发表于 2024-5-24 22:37

本帖最后由 long88888888 于 2024-5-24 22:40 编辑

连续截图功能需要的人也挺多的

superjason 发表于 2024-5-24 23:22

你这个是什么语言

sgbyg 发表于 2024-5-24 23:23

superjason 发表于 2024-5-24 23:22
你这个是什么语言

c#c#c#c#

assuller 发表于 2024-5-24 23:24

这是什么需要写的,很优雅

sgbyg 发表于 2024-5-24 23:33

assuller 发表于 2024-5-24 23:24
这是什么需要写的,很优雅

c#语言写的因为编译出来的程序体积超小
这代码其实是屎山 因为没有进行整理优化
比如弹窗提示已完成后应该return不往后执行的
继续往后执行captureCount++;就多了一个bug

wincao 发表于 2024-5-30 08:55

有没有分析图片的部分?比如地面物品

sgbyg 发表于 2024-5-30 17:50

wincao 发表于 2024-5-30 08:55
有没有分析图片的部分?比如地面物品

是指标注/自动标注吗?
答案是没有
页: [1] 2
查看完整版本: 自己动手开发的小工具 记录编程之路