创建位图型不规则窗体(可透明,可移动)

文章作者 100test 发表时间 2007:12:01 14:41:13
来源 100Test.Com百考试题网


在Form上添加一个OpenPictureDialog,添加一个Image,并为其添加一个图片。再加一个PopupMenu,并创建两个菜单项,一个是Open1,一个是Exit1,其中前者是打开图象文件对话框,后者为退出程序。设置Image1的PopupMenu属性为PopupMenu1。

在Form1的OnCreate事件中添加:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
BmpToRgn().
}

在.h文件中的private段中添加
void __fastcall TForm1::BmpToRgn().

这个函数用来创建不规则窗体。
//---------------------------------------------------------------------------
void __fastcall TForm1::BmpToRgn()
{
Image1->AutoSize=true.
Form1->AutoSize=true.
Form1->BorderStyle=bsNone. //将Form的标题栏去掉
TColor ColorKey=Image1->Canvas->Pixels[0][0]. //以这个点的颜色为透明基准色
int x,y.
int l,r.
POINT *a.
bool lb,rb.
HRGN wndrgn,temprgn.

if((a=(POINT *)malloc(Width*2*(sizeof(POINT))))==NULL)
{
ShowMessage("申请内存失败!").
exit(0).
}

l=0.r=Image1->Height*2-1.
wndrgn=CreateRectRgn(0,0,Image1->Width,Image1->Height).

for(y=0.yHeight.y )
{
lb=true.
for(x=0.xWidth 1.x )
if(Image1->Canvas->Pixels[x][y]!=ColorKey)
{
a[l].x=x.
a[l].y=y.
lb=false.
break.
}
if(lb) a[l]=a[l-1].
l .
rb=true.


相关文章


边缘路由器与边缘网络的作用
分享关于任意播及任意播路由的选择
Windows回收站的文件存取
C 辅导:C 之externC
创建位图型不规则窗体(可透明,可移动)
怎样启动一个程序而不显示它
并行口服务(ParallelPortService——INT17H)
杂项系统服务(Miscellaneou ystemService——INT15H)
串行口服务(SerialPortService——INT14H)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛