用C++开发特殊的屏幕显示效果
以前程序员在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;
}
}
位律师回复
0条评论