分享
 
 
 

在C + + Builder 中 显 示 透 明 位 图

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

在C + + Builder 中

显 示 透 明 位 图

我 们 知 道,GIF 类 型 的 图 像 格 式 支 持 透 明 显 示, 而BMP 类 型 的 图 像 格 式 不 支 持 透 明 显 示。 在Microsoft 照 片 编 辑 器 中 位 图 若 以 设 置 成 透 明 色 方 式 存 储, 则 提 示 出 错。 然 而, 在C + + Builder 中, 却 可 以 轻 而 易 举 地 显 示 透 明 位 图。 透 明 位 图 与 透 明GIF 图 像 相 比 有 一 个 很 大 的 优 点, 即:GIF 图 像 格 式 最 大 支 持256 种 颜 色, 位 图 却 可 以 支 持 真 彩 色。

----在C + + Builder 中 显 示 透 明 位 图

----1. 采 用TImage 组 件。

----下 面, 我 们 制 作 一 幅 飞 机 凌 空 飞 过 蓝 天 的 简 单 动 画。 因 为 移 动 的 飞 机 是 用 透 明 位 图 显 示 的, 所 以 看 起 来 挺 逼 真 的。

---- (1) 在C + + Builder 下 激 活 菜 单"File /New Application" 创 建 一 个 新 工 程, 窗 体 单 元 以 文 件planemain.cpp 存 盘, 工 程 文 件 以plane.cpp 存 盘。

----(2) 在Form1 窗 体 上 新 增 一 个TButton 组 件Button1,

----新 增 一 个TTimer 组 件Timer1, 新 增 三 个TImage 组 件Image1、Image2 和Image3, 新 增 一 个TLabel。

---- (3) 在 窗 体 上 双 击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( 决 定 飞 机 飞 行 的 快 慢, 可 调 整)。

----(4) Timer1 的OnTimer 事 件 控 制 飞 机 的 移 动, 代 码 如 下: void __fastcall TForm1::Timer1Timer

(TObject *Sender)

{Image2 ->Left=Image2 ->Left +1;}

----Button1 的OnClick 事 件 启 动 飞 机, 代 码 如 下: void __fastcall TForm1::Button1Click

(TObject *Sender)

{Timer1 ->Enabled=true;}

----下 图 是 程 序 的 运 行 结 果:

----2. 直 接 从 文 件 中 调 入 位 图, 然 后 画 在 屏 幕 上。 这 种 方 法 灵 活, 且 占 用 内 存 少。 继 续 上 面 的 程 序 设 计:

---- (1) 在 窗 体 上 新 增 一 个TButton 组 件 Button2, 设 置 其Caption 属 性 为" 显 示 透 明 位 图"。

---- (2) Button2 的OnClick 事 件 显 示 透 明 的 位 图, 代 码 如 下: void __fastcall TForm1::Button2Click(TObject *Sender)

// 单 击" 显 示 透 明 位 图" 按 钮 时 进 入

{

Graphics::TBitmap *pBitmap=new Graphics::TBitmap();

try

{pBitmap ->LoadFromFile("Plane.bmp");

// 调 入 位 图

pBitmap ->Transparent = true;

// 设 置 透 明 属 性

pBitmap ->TransparentColor=

pBitmap ->Canvas ->Pixels[2][2];

// 从 位 图 上 取 得 要 设 置 成 的

透 明 颜 色, 也 可 以 直 接 给 出

Form1 ->Canvas ->Draw(10,20,pBitmap);

//AA

// 在 窗 体 上 显 示 透 明 位 图,

没 有 设 置TransparentMode

// 以 位 图[2][2] 处 的 像 素 的 颜 色 为 透 明 色

pBitmap ->TransparentMode = tmAuto;

// 设 置 透 明 模 式, tmAuto:

TransparentColor 属 性 返 回 位

// 图 最 左 下 角 像 素 的 颜 色, 作 为 透 明 色;

// tmFixed: TransparentColor 属 性 返 回 位 图

上 某 一 像 素 的 颜 色, 作 为 透 明 色。

Form1 ->Canvas ->Draw(10,100,pBitmap);

//BB

// 在 窗 体 上 显 示 透 明 位 图,

与AA 行 有 所 不 同

// 以 位 图 最 左 下 角 的 像 素 的 颜 色 为 透 明 色

Image1 ->Canvas ->Draw(30,20,pBitmap);

// 在 背 景 位 图 上 显 示 透 明 位 图

}

catch (...)

{

ShowMessage(" 不 能 调 入 或 显 示 位 图 !");

/ / 显 示 出 错 信 息

}

delete pBitmap; / / 删 除 对 像

}

----应 用 这 种 方 法 进 行 图 像 合 成 时, 背 景 图 像 要 求 是 位 图, 并 且 透 明 位 图 和 背 景 位 图 的 颜 色 位 数 要 尽 量 保 持 一 致, 这 样, 位 图 的 颜 色 才 不 会 改 变。

----另 外, 我 们 利 用TImageList 组 件 也 可 以 显 示 透 明 图 像, 利 用TCanvas 类 的BrushCopy 方 法 可 以 实 现 被 拷 贝 图 像 的 部 分 透 明。

---- 以 上 程 序 在WIN 98 和C + + Builder3 下 调 试 通 过。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有