a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Java > 正文

創建位圖型不規則窗體(可透明,可移動)

2019-09-06 23:33:28
字體:
來源:轉載
供稿:網友

                    //代碼來自互聯網, ccrun整理 :)

在Form上添加一個OpenPictureDialog,添加一個Image,并為其添加一個圖片。再加一個PopupMenu,并創建兩個菜單項,一個是Open1,一個是Exit1,其中前者是打開圖象文件對話框,后者為退出程序。設置Image1的PopupMenu屬性為PopupMenu1。

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

在.h文件中的private段中添加
/tvoid __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;y<Image1->Height;y++)
 {
   lb=true;
   for(x=0;x<Image1->Width+1;x++)
     if(Image1->Canvas->Pixels[x][y]!=ColorKey)
     {
/ta[l].x=x;
/ta[l].y=y;
/tlb=false;
/tbreak;
     }
   if(lb) a[l]=a[l-1];
   l++;
   rb=true;

   for(x=Image1->Width;x>=0;x--)
     if(Image1->Canvas->Pixels[x][y]!=ColorKey)
     {
/ta[r].x=x;
/ta[r].y=y;
/trb=false;
/tbreak;
     }
   if(rb) a[r]=a[r+1];
   r--;
 }

 r=Image1->Height*2-1;
 for(y=0;y<Image1->Height-1;y++)
 {
   for(x=a[y].x;x<=a[r].x;x++)
     if(Image1->Canvas->Pixels[x][y]==ColorKey)
     {
/ttemprgn=CreateRectRgn(x,y,x+1,y+1);
/tCombineRgn(wndrgn,wndrgn,temprgn,RGN_XOR);
/tDeleteObject(temprgn);
     }
   r--;
 }
 //temprgn=CreatePolygonRgn(a,Image1->Height*2,ALTERNATE);
 temprgn=CreatePolygonRgn(a,Image1->Height*2,WINDING);
 CombineRgn(wndrgn,wndrgn,temprgn,RGN_AND);
 DeleteObject(temprgn);
 delete a;
 SetWindowRgn(Handle,wndrgn,true);
}

為了使沒有標題欄的窗體能移動,需要在Image1的OnMouseDown事件中添加以下代碼:
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
     TMouseButton Button, TShiftState Shift, int X, int Y)
{
 if(Button == mbLeft)
 {
   ReleaseCapture();
   Perform(WM_NCLBUTTONDOWN,HTCAPTION, 0);
 }
}

//---------------------------------------------------------------------------
//通過右鍵菜單中的Exit1退出程序
void __fastcall TForm1::Exit1Click(TObject *Sender)
{
 Close();/t
}

//---------------------------------------------------------------------------
//打開圖片文件,并以這個圖片創建不規則窗體
void __fastcall TForm1::Open1Click(TObject *Sender)
{
 if(OpenPictureDialog1->Execute())
 {
   Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
   BmpToRgn();
 }
}
注意圖片的背景色要相同。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 亚洲成人日韩 | 欧美视频在线一区 | 99精品免费视频 | 日韩中文一区二区三区 | 成人激情视频在线观看 | 国产欧美在线观看 | 欧美国产日韩一区 | 日韩成人不卡 | 男女靠逼的视频 | 国产精品视频一区二区三区四蜜臂 | 久久久精品国产 | 一区久久 | 中文字幕日韩专区 | 久久久999精品视频 成人激情在线 | 欧美xxxx在线 | 亚洲国产欧美在线 | www.久久精品| 久久人| 久久精品国产一区 | 欧美性一区二区三区 | 国产成人免费在线观看视频 | 免费一级淫片 | 中文字幕亚洲一区二区三区 | 午夜影院免费视频 | 午夜精品一区二区三区在线观看 | 欧美日韩久久精品 | 国产精品亚洲欧美日韩一区在线 | 黑料社区av在线 | 色噜噜在线 | 久久精品免费观看视频 | 亚洲一区二区三区四区在线 | 青青草在线免费观看 | 国产亚洲综合一区二区 | 少妇高潮一级毛片 | 精品视频在线免费观看 | 欧美日韩精品在线 | 男女视频在线免费观看 | 黄色片网址 | 91国内精品久久 | 欧美成人精品一区二区男人看 | 日本不卡免费新一二三区 |