这里介绍C#实现窗体显示背景知识,通知窗口就是将一般的窗体附加上一层皮肤,这里所谓的皮肤就是一张位图图片,该位图图片通过窗体的OnPaintbackground事件被绘制到窗体表面。

C#完结窗体显现是比较常见的东东,这儿就首要介绍一下C#完结窗体显现布景常识,对常用QQ、MSN等谈天的人们给点提示。

C#完成窗体显现布景常识(c#改变窗体背景)  C#实现窗体显示 第1张

想必大部分网友都运用过QQ、MSN等谈天程序,它们的界面都适当富丽,尤其是当网友上线以及音讯提示时会有一个起浮的窗体从屏幕的右下方缓慢升起,既漂亮又人性化,作为程序员在享用的一起咱们也不由要问:这到底是怎样完结的呢?本文就运用C#完结窗体显现。
简介

QQ和MSN的任务栏告诉窗口很人性化,它能够在不丢掉主窗体焦点的前提下显现一个具有皮肤Skin的告诉窗体,当它显现一段时间后会主动消失,所以用户底子不必干涉它。这样的告诉窗体和一般的具有标题栏、体系图标和按钮的窗体没有太大的差异,窗体外表其实便是画上去的一张位图罢了,而窗体的起浮则会杂乱一点,咱们会用到.Net结构的两层缓冲区绘图技能(拜见作者编译文章"Windows 窗体的.Net结构绘图技能")来确保移 动窗体时所显现的内容滑润且不闪耀,以及运用P/Invoke渠道调用进行对Win32API函数的调用来完结不取得焦点的窗体显现和非标题栏窗体拖动。

C#完结窗体显现布景常识

告诉窗口便是将一般的窗体附加上一层皮肤,这儿所谓的皮肤便是一张位图图片,该位图图片经过窗体的OnPaintbackground事情被制作到窗体外表,在附加位图之前需求调整窗体的可视特点,因为制作操作是针关于窗体客户区域的,所谓客户区域便是指窗体标题栏下方以及窗体边框以内的一切区域,所以需求将窗体的边框和外观特点 FormBorderStyle调整为:None,这样所制作的图画就会填充整个窗体。

首要,咱们会用到Region目标,Region目标能够准确的描绘出恣意形状的概括规模,经过一个位图图画创立Region目标后再将其传递给窗体的Region特点就能够使窗体依照 Region所界说的概括显现出来。作为皮肤运用的位图文件能够经过任何图画修改软件比如:Photeshop来创立和修改,仅仅留意一点,需求将图片的布景色调成特定色彩以便程序制作时将其铲除,咱们在这儿运用的布景色为粉红色。为了能够让Region目标依照图画中感兴趣的内容边框来创立窗体,咱们还需求运用GraphicsPath类将图画概括依照必定途径标示下来,稍后便依照该途径创立Region目标。

然后经过窗体的绘图事情将位图的内容显现在窗体外表,咱们没有直接运用OnPaintbackground事情而是重载了该办法,这样做的优点便是一些低层的制作操作还持续交由.Net结构运行时来处理,咱们只考虑实践需求的制作操作即可。在OnPaintbackground办法中咱们启用了两层缓冲区绘图技能,所谓该技能便是指先在内存中的一块画布上把即将显现的图画显现出来或进行处理,比及操作完结再将该画布上所显现的图画放置到窗体外表,这样的机制能够十分有用的下降闪耀的呈现,使图画显现愈加滑润。告诉窗体从屏幕的右下方进行升起逗留一段时间后再渐渐回落,这儿需求用到回来屏幕区域的巨细规模的.Net结构办法 Screen.GetWorkingArea(WorkAreaRectangle),经过必定算法计算出告诉窗体显现前的初始方位。最终,咱们即将显现的文本依照必定格局和Rectangle目标所指定的区域规模制作到窗体外表。告诉窗体的封闭操作是经过设定一个区域,当用户用鼠标单击时检测单击坐标是否在该区域内,若在区域内就能够履行躲藏告诉窗体的代码。

咱们留意了,当QQ和MSN的告诉窗口显现时其主窗体的焦点没有丢掉,也便是说程序没有将本身的焦点转移到显现的告诉窗体上。经过测验,咱们不管怎样样调用.Net结构供给的窗体显现例程比如:Form.Show都无法确保主窗体的焦点不丢掉,在VC环境下咱们能够运用Win32API的ShowWindows函数来完结杂乱的窗体显现操作,可是.Net结构底子没有供给相似的办法,那么咱们能否经过.Net结构调用该API函数来显现窗体呢?幸亏.Net结构供给了P/Invoke渠道调用,运用渠道调用这种服务,保管代码就能够调用在动态链接库中完结的非保管函数,并能够封送其参数,咱们能够轻松的显现但不取得焦点的窗体。程序中用到的Windows API以及常量的界说都保存在WinUser.h头文件中,其对应的动态链接库文件便是user32.dll,运用.Net结构供给的 DllImportAttribute类对导入的函数进行界说,然后就能够十分便利的在程序中调用该函数了。

因为咱们将告诉窗体的标题栏躲藏了,所以对窗体拖动操作还需求咱们自己着手进行处理。本文介绍了怎么愈加高效的进行拖动窗体操作,有些网友在关于非标题栏拖动窗体编程时倾向组合运用鼠标事情来进行,这样做的实质没有任何不当,可是频频的事情响应和处理反而使程序功能有所下降。咱们将持续运用 Win32API的底层处理办法来处理该问题,便是向窗体发送标题栏被单击的音讯,模仿实践的拖动操作。

咱们会经过2个计时器来完结窗体的显现、逗留和躲藏,经过设置速度变量能够改动C#完结窗体显现和躲藏的速度。

【修改引荐】

  1. C#与VB7比较详解
  2. C#衔接Access浅析
  3. C#创立XML Web services学习经历
  4. C# Windows应用程序概述
  5. C# SmartPhone程序学习笔记
转载请说明出处
知优网 » C#完成窗体显现布景常识(c#改变窗体背景)

发表评论

您需要后才能发表评论