(转载)c++builder/delphi中透明panel及透明窗口的实现方法_delphi教程
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教程相关推荐
- java if equals_Java中判断对象是否相等的equals()方法使用教程
Object类中的equals方法用于检测一个对象是否等于另一个对象.在Object类中,这个方法判断两个对象是否具有相同的引用,如果两个对象具有相同的引用,它们一定是相等的.从这点上看,将其作为默认 ...
- 【转载】取得系统中网卡MAC地址的三种方法
From:http://blog.csdn.net/zhangting1987/article/details/2732135 网卡地址这个概念有点混淆不清.因为实际上有两个地址,mac地址和物理地址 ...
- 转载:简单介绍Python中的try和finally和with方法
用 Python 做一件很平常的事情: 打开文件, 逐行读入, 最后关掉文件; 进一步的需求是, 这也许是程序中一个可选的功能, 如果有任何问题, 比如文件无法打开, 或是读取出错, 那么在函数内需要 ...
- Delphi中打开网页连接的几种方法
Delphi打开网址链接的几种方法: 1: 用默认浏览器打开 uses shellapi procedure TForm1.Button2Click(Sender: TObject); begin ...
- php 替换 tab,PHP 删除字符串中的空格和换行符终极方法 - 文章教程
有时我们生成的代码中,或多或少会遇到代码中或者字符串中有多余的空格.换行等其他字符,但是这些字符在浏览器里面是不显示出来,任何的换行和再多的空格,都只显示一个空格的空间,这势必对网页的优化有这极其不好 ...
- PHP发送带附件的电子邮件,php中PHPMailer发送带附件的电子邮件方法_PHP教程
在php开发利用PHPMailer发送邮件是常用的做法了,这种比起php mail用好用多了,下面我们来看看PHPMailer如何发送带有附件的电子邮件吧. .首先到http://phpmailer. ...
- 在delphi中如何动态建立类的实例
在面向对象语言中,用两种方法建立类的实例:静态建立和动态建立.静态建立就是在程序中显式地建立类的实例,如c1 = TClass1.Create().而动态建立是在只知道类名的前题下建立类的实例.动态建 ...
- 在Delphi中动态建立数据库结构
在Delphi中动态建立数据库结构 刘军发 ----------------------------------------------------------------------------- ...
- Delphi中对消息的处理
Delphi中对消息的处理 刘文彦 张 翔 摘 要:本文对覆盖消息和自定义消息的处理方法进行讨论,总结出两类消息处理的步骤, 并通过例程加以实现. 关键词:Delphi; 消息; 通 ...
- delphi透明panel组件或者制作方法
//透明Panel控件unit TranPanel;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, For ...
最新文章
- 036_Hashtable和HashMap的区别
- 洛谷——P1640 [SCOI2010]连续攻击游戏
- proe4.0安装教程
- attempt to create delete event with null entity
- 数独求解 DFS DLX
- tomcat8 进入不了Manager App 界面 403 Access Denied
- HTML列表标签,讲的明明白白!
- SFTPUtils工具类及使用
- redis 安装并设置为开机启动服务
- 河北二本计算机专业排名,河北省最好的二本财经类大学有哪些
- js匿名函数--转了
- vs矩形框边框线显示被选中的区域;_Excel中,重复的数据高亮显示,如何快速删去?...
- ring0检测隐藏进程
- 初用WEB IOU,IE LAB备战启航
- (一)CGAL库应用:指定平面切割模型并用openGL显示该层面轮廓
- 云计算业务优势扩大,阿里云业务持续高速增长
- python中e怎么计算_蒙特卡洛法计算自然常数e——python编程及可视化
- Aurelia历险记:创建自定义PDF查看器
- MSP430 GPIO概述 第六章
- 中华名将索引 - 第一批:廉颇
热门文章
- linux上python升级_Linux下安装升级python
- 实现xml和json接口(第一篇)
- 顶尖电子秤ls6恢复出厂_顶尖电子秤常见故障处理方法new
- Linux-CentOS7安装教程【附CentOS7镜像】
- 5G+北斗高精度定位系统适用于哪些行业领域?
- JDY-18+STM32的蓝牙APP控制 PWM灯光
- 计算机动漫与游戏制作电脑配置,动漫与游戏设计该如何选电脑配置?
- React fundamental 和 React Router-郭永峰-专题视频课程
- Rhino导入Revit生成体量幕墙的方法和操作要点
- laravel文件上传与下载