用C#WinFrom写一个截取全屏的功能遇到截不全屏幕的问题

        主要代码如下

        private Size ScreenSize { get { return Screen.PrimaryScreen.Bounds.Size; } }//获取主屏幕的分辨率嘛
        private void button2_Click(object sender, EventArgs e)//按键截取当前图嘛
        {
            Bitmap CatchBmp = new Bitmap(ScreenSize.Width, ScreenSize.Height);
            Graphics _Graphics = Graphics.FromImage(CatchBmp);
            _Graphics.CopyFromScreen(new Point(0, 0), new Point(0, 0), ScreenSize);
            //Bitmap CatchBmp = new Bitmap(Screen.AllScreens[0].Bounds.Width, Screen.AllScreens[0].Bounds.Height);//
            //Graphics g = Graphics.FromImage(CatchBmp);//
            //_Graphics.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(Screen.AllScreens[0].Bounds.Width, Screen.AllScreens[0].Bounds.Height));//
            _Graphics.CopyFromScreen(new Point(0, 0), new Point(0, 0), ScreenSize);
            pictureBox.Image = CatchBmp;
            CatchBmp.Save(@"C:\Users\SSSSSakuraZ\Desktop\QQ截图工具\1.jpg");
        }

没有问题吧?但是却不能截全图!。。。如下:

就很奇怪。。。想不通。。。想啊想啊。。。突然发现在电脑桌面右键显示设置里有这么一个东西——缩放与布局。。。如下:

把“更改文本、应用等项目的大小”更改为“100%”后,好了,解决问题了。。。能够截全图了。。。如下:

所以新的问题就来了。。。当没有更改“文本、应用等项目的大小”时,该如何编写代码解决这个问题呢?

还发现一个新的问题,更改了这个值以后,微信的截图功能就变成了这样:

 整个截屏被缩小了。。。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
抱歉,我无法编完整的项目代码。但是,我可以提供一些关于如何编一个基于C# WinForm的图书管理系统的指导,并提供一些SQL代码示例。 1. 设计数据库结构 首先,你需要设计一个适合图书管理系统的数据库结构。你可以创建一个名为"library"的数据库,并在其中创建以下表格: - books:存储书籍信息,包括书名、作者、ISBN、出版社等。 - categories:存储书籍分类信息。 - users:存储用户信息,包括用户名、密码、邮件地址等。 - borrowings:存储借书记录,包括借书日期、还书日期、还书状态等。 你可以使用以下SQL代码创建这些表格: ``` CREATE TABLE books ( book_id INT PRIMARY KEY IDENTITY, title VARCHAR(100) NOT NULL, author VARCHAR(100) NOT NULL, isbn VARCHAR(20) NOT NULL, publisher VARCHAR(100) NOT NULL, category_id INT NOT NULL, CONSTRAINT fk_books_categories FOREIGN KEY (category_id) REFERENCES categories(category_id) ); CREATE TABLE categories ( category_id INT PRIMARY KEY IDENTITY, name VARCHAR(50) NOT NULL ); CREATE TABLE users ( user_id INT PRIMARY KEY IDENTITY, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL ); CREATE TABLE borrowings ( borrowing_id INT PRIMARY KEY IDENTITY, book_id INT NOT NULL, user_id INT NOT NULL, borrowed_date DATETIME NOT NULL, returned_date DATETIME NULL, status VARCHAR(20) NOT NULL, CONSTRAINT fk_borrowings_books FOREIGN KEY (book_id) REFERENCES books(book_id), CONSTRAINT fk_borrowings_users FOREIGN KEY (user_id) REFERENCES users(user_id) ); ``` 2. 编C# WinForm程序 接下来,你需要编一个C# WinForm程序,用于管理上述数据库中的数据。你可以使用Visual Studio开发环境来创建一个新的WinForm项目,然后根据需要添加窗体、控件和代码。 例如,你可以创建一个名为"BooksForm"的窗体,用于显示所有书籍的列表。你可以使用以下代码从数据库中检索书籍信息,并将其显示在DataGridView控件中: ``` private void BooksForm_Load(object sender, EventArgs e) { string connectionString = "your_connection_string_here"; string query = "SELECT book_id, title, author, isbn, publisher FROM books"; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(query, connection); SqlDataAdapter adapter = new SqlDataAdapter(command); DataTable dataTable = new DataTable(); adapter.Fill(dataTable); dataGridView1.DataSource = dataTable; } } ``` 你还可以创建其他窗体和代码,用于添加、编辑和删除书籍信息,管理书籍分类、用户和借书记录等。 以上只是一个简单的示例,你需要根据自己的具体需求进行更多的设计和编码。 注意:以上代码仅为示例,你需要根据自己的实际情况进行修改。同时,为了安起见,你应该使用参数化查询来防止SQL注入攻击。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值