c++builder/delphi中透明panel及透明窗口的实现方法_delphi教程

可能大多数程序员会问:透明窗口,特别是透明Panel有什么应用价值呢?可别小看它们哦,下面我就来讲讲他们的巨大作用。
(1)透明窗口可以用于软件界面特效。大家可以看到很多软件的窗口出现或退出的时候是渐进或渐出的,而并非象WinArray8那样直接弹出窗口。这就是Win2000下所提供的功能。实现方法很简单:

this->AlphaBlend=true;

this->AlphaBlendValue=100;

代码中this是窗口的指针,当然你不能在数据模块或是其他类里调用(废话)。代码更改了窗口的属性:AlphaBlend及AlphaBlendValue。AlphaBlend为true时窗口为透明状态,false时为不透明状态;AlphaBlendValue值为整型,可以取0~255的范围,0时为全透明,255时为全不透明,当然中间的值为半透明咯(爽)。而窗口渐进或渐出效果只要先将AlphaBlend设为true,然后在窗口显示或关闭时在一个循环语句中逐渐将AlphaBlendValue值改大或改小,就可以了(别忘了改完AlphaBlendValue后要刷新窗口哦:this->Refresh())。注意,窗口透明后,窗口上面的所有控件将跟随窗口透明。

难道透明在窗口中的应用就如此而已吗?NO!!!还有更精彩的。窗口类还有两个属性:TransparentColor和TransparentColorValue。先将TransparentColor(bool型)设为true,然后再将TransparentColorValue(TColor型)设为你想设为透明的颜色,那么窗口上只要有这种颜色的地方将呈现透明状态。(爽爽爽)配合AlphaBlend及AlphaBlendValue属性,可以做出想不到的特效来。怎么做?不用我再写了吧。

(2)透明Panel的实现方法。TPanel类有一大缺点:只能设置其颜色,要是想在上面放一幅bmp图或要透明的话无法实现;而它也有一大优点:因为他是从TWinControl类继承而来的,所以它的上面可以放其他控件,再就是它可以位于同级控件的上面。最后一句话什么意思?你把一个TPanel控件放到窗口上,再把一个TImage控件也放到窗口上,现在这两个控件的父都是窗口,而这两个控件属于同级关系,将Panel拖到Image上面盖住一部分,你会发现,无论你如何操作都无法用Image盖住Panel,即便你用了bring to front 或set to back命令,如果你将Image换成Panel的话,两个Panel无论谁盖住谁都可以了。这是因为TImage继承自TGraphicControl的缘故。而且凡继承自TGraphicControl的控件上面都不能放其他控件。你还可以发现TPanel类没有TCanvas属性,因此无法在上面画东西。

怎么样实现透明,而且还可以显示背景图的Panel呢?答案就是自己重新做一个Panel出来,限与篇幅,我在这里不写代码,你想要的话,发个E-Mail给我:decsentangle@sohu.com 。然后我再把控件代码发给你(别担心,免费的)。C++Builder和Delphi代码都可以。

究竟透明Panel有什么用呢?God save me,用处可大了,例如作为GIS系统中的图层。图层?当然如果你用过Photoshop或Flash的话。首先,透明Panel可以接受控件,那么你可以将点、线、面、图等控件放到它上面,而不是利用TCanvas去画它们,利用OOP(面向对象编程)技术你就可以方便的对他们进行操作,例如用户用鼠标点击一条线的时候,可以利用该线控件的OnMouseClick事件触发它,而如果是用TCanvas画出来的线,你就不得不去确定鼠标点击的坐标是否在这条线上。当然你还可以利用透明Panel代替普通Panel做出很多界面特效来。

转载于:https://www.cnblogs.com/angelbd/p/3373138.html

(转载)c++builder/delphi中透明panel及透明窗口的实现方法_delphi教程相关推荐

  1. java if equals_Java中判断对象是否相等的equals()方法使用教程

    Object类中的equals方法用于检测一个对象是否等于另一个对象.在Object类中,这个方法判断两个对象是否具有相同的引用,如果两个对象具有相同的引用,它们一定是相等的.从这点上看,将其作为默认 ...

  2. 【转载】取得系统中网卡MAC地址的三种方法

    From:http://blog.csdn.net/zhangting1987/article/details/2732135 网卡地址这个概念有点混淆不清.因为实际上有两个地址,mac地址和物理地址 ...

  3. 转载:简单介绍Python中的try和finally和with方法

    用 Python 做一件很平常的事情: 打开文件, 逐行读入, 最后关掉文件; 进一步的需求是, 这也许是程序中一个可选的功能, 如果有任何问题, 比如文件无法打开, 或是读取出错, 那么在函数内需要 ...

  4. Delphi中打开网页连接的几种方法

    Delphi打开网址链接的几种方法:  1:  用默认浏览器打开 uses shellapi procedure TForm1.Button2Click(Sender: TObject); begin ...

  5. php 替换 tab,PHP 删除字符串中的空格和换行符终极方法 - 文章教程

    有时我们生成的代码中,或多或少会遇到代码中或者字符串中有多余的空格.换行等其他字符,但是这些字符在浏览器里面是不显示出来,任何的换行和再多的空格,都只显示一个空格的空间,这势必对网页的优化有这极其不好 ...

  6. PHP发送带附件的电子邮件,php中PHPMailer发送带附件的电子邮件方法_PHP教程

    在php开发利用PHPMailer发送邮件是常用的做法了,这种比起php mail用好用多了,下面我们来看看PHPMailer如何发送带有附件的电子邮件吧. .首先到http://phpmailer. ...

  7. 在delphi中如何动态建立类的实例

    在面向对象语言中,用两种方法建立类的实例:静态建立和动态建立.静态建立就是在程序中显式地建立类的实例,如c1 = TClass1.Create().而动态建立是在只知道类名的前题下建立类的实例.动态建 ...

  8. 在Delphi中动态建立数据库结构

    在Delphi中动态建立数据库结构  刘军发 ----------------------------------------------------------------------------- ...

  9. Delphi中对消息的处理

    Delphi中对消息的处理 刘文彦  张  翔  摘   要:本文对覆盖消息和自定义消息的处理方法进行讨论,总结出两类消息处理的步骤, 并通过例程加以实现. 关键词:Delphi; 消息; 通 ...

  10. delphi透明panel组件或者制作方法

    //透明Panel控件unit TranPanel;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, For ...

最新文章

  1. 036_Hashtable和HashMap的区别
  2. 洛谷——P1640 [SCOI2010]连续攻击游戏
  3. proe4.0安装教程
  4. attempt to create delete event with null entity
  5. 数独求解 DFS DLX
  6. tomcat8 进入不了Manager App 界面 403 Access Denied
  7. HTML列表标签,讲的明明白白!
  8. SFTPUtils工具类及使用
  9. redis 安装并设置为开机启动服务
  10. 河北二本计算机专业排名,河北省最好的二本财经类大学有哪些
  11. js匿名函数--转了
  12. vs矩形框边框线显示被选中的区域;_Excel中,重复的数据高亮显示,如何快速删去?...
  13. ring0检测隐藏进程
  14. 初用WEB IOU,IE LAB备战启航
  15. (一)CGAL库应用:指定平面切割模型并用openGL显示该层面轮廓
  16. 云计算业务优势扩大,阿里云业务持续高速增长
  17. python中e怎么计算_蒙特卡洛法计算自然常数e——python编程及可视化
  18. Aurelia历险记:创建自定义PDF查看器
  19. MSP430 GPIO概述 第六章
  20. 中华名将索引 - 第一批:廉颇

热门文章

  1. linux上python升级_Linux下安装升级python
  2. 实现xml和json接口(第一篇)
  3. 顶尖电子秤ls6恢复出厂_顶尖电子秤常见故障处理方法new
  4. Linux-CentOS7安装教程【附CentOS7镜像】
  5. 5G+北斗高精度定位系统适用于哪些行业领域?
  6. JDY-18+STM32的蓝牙APP控制 PWM灯光
  7. 计算机动漫与游戏制作电脑配置,动漫与游戏设计该如何选电脑配置?
  8. React fundamental 和 React Router-郭永峰-专题视频课程
  9. Rhino导入Revit生成体量幕墙的方法和操作要点
  10. laravel文件上传与下载