下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

学习在C++Builder中显示透明的位图的方法

作者:课课家教育     来源: http://www.kokojia.com点击数:1554发布时间: 2016-12-30 14:00:32

标签: C++Builder调试程序编程代码

大神带你学编程,欢迎选课

  图片的格式真的是多种多样的,常见的存储的格式有bmp,jpg,tiff,gif,pcx,PSd,CDR,WMF等。今天我们要学习的内容是:学习在C++Builder中显示透明的位图的方法。何谓位图呢?位图是一种与硬件设备无关的图像文件格式,使用非常广。现在我们就一起来学习一下吧。

学习在C++Builder中显示透明的位图的方法_C++Builder_调试程序_编程代码_课课家

  相信大家都应该知道,那就是BMP(外语简称:BMP、外语全称:BitMaP)类型的图像格式是并不支持透明显示的,然而GIF类型的图像格式却相反,它是支持透明显示的。其实在Microsoft的照片编辑器中,位图如果是以设置成为透明色方式存储的话,那么就会向大家提示出错。但是在C++Builder中,却可以非常容易将透明位图显示出来。是不是非常神奇?其实透明位图和透明GIF图像相比的话,透明位图就有一个非常大的优点。那就是位图可以支持真彩色,然而GIF图像格式最大支持256种颜色而已,并不是那么的完善。

  那么我们在C++Builder中如何将透明位图显示出来呢?方法有两种哟!在这篇教程中,小编会制作一幅简单的动画作为示范例子演示给大家看。这幅动画小编会以飞机凌空飞过蓝天作为主题,为什么呢?那是因为移动的飞机就是使用透明位图显示出来的,因此大家看起来都是十分逼真的。大家要注意一点,那就是在这篇教程中的所有程序都是C++Builder3已经WIN98下调试程序通过的。废话不多说,具体的实现方法如下:

  方法一:采用Timage组件

  步骤一:首先我们先在C++Builder下创建一个新工程,执行以下的操作:激活菜单"File/Newapplication"。工程文件会以plane.cpp存盘,然而窗体单元会以文件planemain.cpp进行存盘。

  步骤二:接着我们就要在名为Form1窗体上面,重新增加几个组件,分别是一个Ttimer组件名为Timer1、一个Tbutton组件名为Button1以及一个标签Tlabel。除此之外,我们还要新增多三个Timage组件,分别实Image1、Image2以及Image3。

  步骤三:然后我们就在窗体上面使用鼠标双击Image1组件,在这个组件上将蓝天的位图BlueSky.bmp进行调入,把位图的Transpartant属性设置成为false值,就是不透明的意思,这个位图的我们是作背景使用的;当完成以后,我们继续使用鼠标双击Image2组件,在这个组件上将飞机的位图Plane.bmp调入,它的Transparent属性设置成为true值,就是为透明的意思。它的Autosize属性设置成为true值,然后就将Image2组件放在Image1组件的上面。这个时候大家应该可以看出,飞机已经深深的融入蓝天中了。为了可以有一个对比的效果,我们继续使用鼠标双击Image3组件,在这个组件上将飞机的位图Plane.bmp调入,它的Transparent属性设置成为false值,就是不透明的意思。它的Autosize属性设置成为true值,Label1的Caption属性设置成为"源位图"。还要继续将Button1的Caption属性设置成为"开始",除此之外,将Timer1的Enabled属性设置成为false值,Interval属性设置成为100。这个属性的作用主要就是用来决定飞机飞行的速度,想要快亦或是慢速度,通通都是可以进行调整的,大家可以根据自己的喜好进行调整。

  步骤四:控制飞机的移动主要就是由Timer1的OnTimer事件决定的,具体的编程代码如图所示:

Timer1的OnTimer事件

  启动飞机主要就是由Button1的OnClick事件决定的,具体的编程代码如图所示:

Button1的OnClick事件

  方法二:直接从文件中调入位图,接着将其绘画在屏幕上

  第二种方法的话,相对来说比较灵活,并且占用内存的也很少。一般情况下,小编都是使用这种方法的。那么现在我们继续上面的应用程序的设计吧,具体的实现方法如下:

  步骤一:首先我们先在窗体上重新增加一个Tbutton组件名为Button2,它的Caption属性设置成为"显示透明位图".

  步骤二:显示透明的位图是由Button2的OnClick事件决定的,具体的编程代码如图所示:

Button2的OnClick事件第一页代码Button2的OnClick事件第二页代码

  温馨提示:大家在使用第二种方法进行图像合成的时候,一定要注意一点那就是背景图像一定要是位图才可以。除此之外背景位图以及透明位图这两者的颜色位数要尽可能的保持一致。因为只要这样操作的话,位图的颜色才不会发生变化的。另外一个方面,那就是大家如果想要显示透明图像的话,也可以使用TImageList组件实现目的,使用Tcanvas类的BrushCopy方法同样也是可以实现被拷贝图像的部分透明的目的哟!

  小编结语:

  大家通过教程可以看到,小编主要是想大家学习一下在C++Builder中显示透明的位图的方法?是不是非常的简单易学?今天的编程语言教程就已经介绍完毕了,如果你还是与犹未尽,可以进入我们的官网课课家教育,了解更多的C++Builder入门教程。

赞(25)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程