感谢大家的支持,这几天从早忙到晚,一个字累呀!!!现在挺困的,但是又不习惯这么早睡觉,哎~~还是利用这个时间继续来写第三篇吧.
  前两篇已经基本向大家介绍了绘图的基本知识.那么,我就用我们上两篇所学的,做几个例子.
  我们先来做一个简单的----仿QQ截图,关于这个的例子其实网上已经有这方面的资料了,但是为了文章的完整性,还是觉得有必要讲解.
  我们先来看一下效果:

                              C# GDI+ 简单绘图 (三) 仿浏览器截屏效果
                                                                                                                  (图1)
                                                      C# GDI+ 简单绘图 (三) 仿浏览器截屏效果
                                                                                                                     (图2)

  接下来看看这是如何做到的. 
  思路:聊天窗体上有一个截图按钮,点击按钮后,程序将整个屏幕画在一个新的全屏窗体上,然后显示这个窗体.因为是全屏的窗体,并且隐藏了菜单栏、工具栏等,所以在我们看来就好像是一个桌面的截图,然后在这个新窗体上画矩形,最后保存矩形中的内容并显示在原来的聊天窗体中.
  步骤:
  A.新建一个窗体.命名为Catch.然后设置这个窗体的FormBorderStyle为None,WindowState为Maximized.
  B.我们对代码进行编辑:

C# GDI+ 简单绘图 (三) 仿浏览器截屏效果using System;
C# GDI+ 简单绘图 (三) 仿浏览器截屏效果
using System.Collections.Generic;
C# GDI+ 简单绘图 (三) 仿浏览器截屏效果
using System.ComponentModel;
C# GDI+ 简单绘图 (三) 仿浏览器截屏效果
using System.Data;
C# GDI+ 简单绘图 (三) 仿浏览器截屏效果
using System.Drawing;
C# GDI+ 简单绘图 (三) 仿浏览器截屏效果
using System.Text;
C# GDI+ 简单绘图 (三) 仿浏览器截屏效果
using System.Windows.Forms;
C# GDI+ 简单绘图 (三) 仿浏览器截屏效果
C# GDI+ 简单绘图 (三) 仿浏览器截屏效果
namespace Client
}

  C.创建了Catch窗体后,我们在截图按钮(位于聊天窗体上)上加入以下事件:

C# GDI+ 简单绘图 (三) 仿浏览器截屏效果        private void bCatch_Click(object sender, EventArgs e)
        }

  这样我们的截图功能便完成了.
  我想对于初学者来说如何消去第一次绘制的图片是个比较困难的问题.如果没有采取措施,你会发现只要你鼠标移动,就会画一个矩形,这样便会出现N多的矩形,而我们只是要最后的那一个.
  一般解决这种问题的方法有两种:
  1.就是在绘制第二个图形时,我们先用与底色相同的颜色将上次绘制的图形重新绘制一下.但这往往需要底色为纯色时使用.
  2.我们并不直接将图形画在画板上,我们用一个图片A来保存原画板上的图片.然后再新建一个与图片A相同的图片B,将我们要绘制的图形画在该图片B上,然后再将该图片B画在画板上.这样图片A并没有被改变.于是第二次画的时候我们还是同样新建一个与图片A相同的图片进行绘制.那么上一次的图形就不会被保留下来.问题也就解决了.

  下一次,向大家介绍如何做一个仿windows画板的程序.

原作者:stg609

相关文章:

  • 2022-02-12
  • 2021-12-10
猜你喜欢
  • 2021-12-03
  • 2021-12-24
  • 2021-12-26
相关资源
相似解决方案