用C++开发特殊的屏幕显示效果

用C++开发特殊的屏幕显示效果,第1张

用C++开发特殊的屏幕显示效果,第2张

以前程序员在DOS平台下开发应用软件时,利用DOS的开放性特点,通过中断编写一些特殊的显示效果,从而给自己的程序增加一些有趣的特性。然而,随着第四代开发工具逐渐用于面向Windows的编程和可视化,人们越来越受到Windows统一编程风格的束缚。同时,由于Windows直接管理中断,用原来的方法实现一些特殊的显示效果变得越来越困难。

那么,在Windows时代,程序员如何实现Windows的特效呢?实际上,因为整个Windows是一个图形显示系统,所以用户程序的每个界面和窗口都是系统的画布。程序员可以利用这个特性来实现窗口的特殊效果。

近日,笔者利用C++ Builder 5.0 Enterprise成功实现了该功能,现介绍如下:

1.在BCB建立项目文件project1.dpr,在Form1中添加以下控件:

控件名称属性值

t表单颜色clBtnText

TMainMenu名称维护1

t图像名称图像1

对齐alClient

自动调整为真

同时,在MainMenu1控件中添加一个菜单项,该菜单项具有以下属性:

名称标题

1 Items1图像从中间向左右分开。

2 Items2图像从左到右合并到中间。

Items3图像从中间到底部分隔。

4 Items4个图像从上到下合并到中间。

5个项目5个图像从左侧移入

6个项目6个图像从右侧移入

7项7图像从顶部移入

8个项目8个图像从底部移入

S9图像从左侧屏幕显示。

S10图像从右侧屏幕显示。

S11,从顶部屏幕显示项目11图像。

项目12图像从底部屏幕显示。

项目13图像从上到下排列

Items14图像自下而上排列。

项目15形象循环展示

S16图像左右移动。

Items17图像上下移动。

同时,将以下变量添加到Unit.cpp中的private:

私人:

位图BM;

graphics::tbit map * bitmap 1;

int i,j;

int WideHalf

TRect Dest1,Source1,Dest2,Source2

int HeightHalf

HRGN MyRgn

2.在Form1的OnCreate事件中添加以下代码:

void _ _ fastcalltform 1::form create(to object * sender)//初始化图像特效显示//

{

Graphics::tbit map * bitmap 1 = new Graphics::tbit map();//定义一个图像句柄//

bitmap 1-> LoadFromFile(" C:\ \ factory . BMP ");//将特效显示的图像设置为factory.bmp//.

if(getDeviceCaps(form 1-> canvas-> handle,bits pixel)= = 8)//获取显示窗口的颜色属性//

{

GetObject(Bitmap1->Handle,sizeof(BITMAP),(LPSTR)BM);

If(BM . bmbitspice = = 8)//如果特效显示的图像的颜色属性是256色//

{

select Palette(form 1-> Canvas-> Handle,Bitmap1->Palette,FALSE);//从特效显示的调色板中提取配色方案//

realize palette(form 1-> Canvas-> Handle);//设置显示窗口中的配色方案//

}

bitmap-> handle type = BMD db;

}

}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 用C++开发特殊的屏幕显示效果

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情