安全中国首页 > 编程中心 > VC/C++编程
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:download.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

使用Visual C#制作可伸缩个性化窗体[2](图)

更新时间:2008-7-13 12:26:46
责任编辑:ShellExp
热 点:
 然后使用以下的方法在Form的构造函数中将图片取出来(资源文件名为Skin.resources):

  rm = new ResourceManager("SkinWindow.Skin", Assembly.GetExecutingAssembly());
  Bottom_Left = (Bitmap)rm.GetObject("Bottom_Left");
  …(其它的图片也按照此方法取)

  重载Form的OnPaint事件:

  Graphics g = e.Graphics;
  //手工画窗体的各个部分
  DrawMiddle_Left(e.Graphics);//画左边框
  DrawBottom_Middle(e.Graphics);//画下边框
  DrawMiddle_Right(e.Graphics);//画右边框
  DrawBottom_Left(e.Graphics);//画左下角
  DrawBottom_Right(e.Graphics);//画右下角
  DrawTop_Left(e.Graphics);//画标题栏左边
  DrawTop_Right(e.Graphics);//画标题栏右边
  DrawTop_Middle(e.Graphics);//画标题栏中间
  DrawSys_Button(e.Graphics);//画系统按纽

  以下是上述画皮肤方法的具体实现部分,我只举一个画左边框的代码示例,其它的部分请读者举一返三:

  private void DrawMiddle_Left(Graphics g)
  {
   Brush brush = new TextureBrush(Middle_Left, new Rectangle(0, 0,
   Middle_Left.Width, Middle_Left.Height));
   g.FillRectangle(brush, 0, TITLE_WIDTH, Middle_Left.Width,
   Height - Bottom_Middle.Height - TITLE_WIDTH);
  }

  衣服穿上了,现在我们的程序就有了不同的外观:

  看上去已经很酷了,不过只是花架子,因为边框,标题栏,系统按纽都是我们自己画上去的假的边框,标题栏和系统按纽,所以这个窗体既不能移动也不能自由的放大缩小,点关闭都没用。以前我们写程序从来都不需要关心这个的,这些都是窗体的基本功能呀?没有从来都没有想到这个竟然还会是个问题吧?

  怎么办呢?答案就是我们自己来做,不过会比较麻烦,因为取消掉了边框,所以Windows不会帮你发出系统事件,你捕捉不到系统发生了什么事情的话,就没有办法写下响应代码,所以我们要自己检测鼠标的坐标,并根据鼠标的动作,自己来发出事件消息,然后进行响应。

  首先我们先定义出一些响应事件的代码,我定义了一个抽象的基类MouseAction,用来表示所有的鼠标事件,它有一个抽象方法Action:

  public abstract class MouseAction
  {
   public abstract void Action(int ScreenX, int ScreenY, System.Windows.Forms.Form form);
  }

  然后再来定义出它的各个派生类来表示出具体每个鼠标事件响应的代码。

  下面是一个向右拉伸窗口事件的代码响应:

  public class MouseSizeRight : MouseAction
  {
   private int lx;
   public MouseSizeRight(int LocationX)
   {
    lx = LocationX;
   }
   public override void Action(int ScreenX, int ScreenY, System.Windows.Forms.Form form)
   {
    form.Width = ScreenX - lx;
    form.Invalidate();
   }
  }

 
学习软件编程开发技术,推荐加入以下软件编程培训班:
易语言软件编程培训班(简单易学)  Delphi软件编程培训班  VC++软件编程培训班
VB软件编程培训班  JAVA高端编程就业研发班

学习网站开发制作技术,推荐加入以下网站开发培训班:
ASP.net网站开发项目实战班  ASP语言网站建设培训班

学习网络安全入侵防护技术,推荐加入以下技术培训班:
大型网络安全入侵防护班  网站脚本程序全方位安全检测班

学习网络管理、网吧运营维护技术(网管),推荐加入以下培训班:
大型网吧技术管理人才特训班  Linux网络嵌入架构工程师培训班

学习专项特殊技术,推荐加入以下专项技术培训班:
软件与游戏外挂脱壳破解班(逆向工程)  赚钱王道-网赚技能培训班  Flash动画设计师就业特训班

 
相关编程
一日一文章
 
一日一软件
一日一动画