久久―日本道色综合久久,亚洲欧美精品在线,狼狼色丁香久久婷婷综合五月,香蕉人人超,日本网站黄,国产在线观看不卡免费高清,无遮挡的毛片免费

2023信創(chuàng)獨角獸企業(yè)100強
全世界各行各業(yè)聯(lián)合起來,internet一定要實現(xiàn)!

C++ 中不規(guī)則窗體的快速顯示

2004-02-14 eNet&Ciweek

  最終解決方案

    考慮到既不增加算法的復雜度,又可大幅度縮短不規(guī)則窗體的創(chuàng)建速度,因此采用綜合以上兩種方案,達到我們應用的目的,程序中首先應用方法二對圖片雙向掃描,產(chǎn)生輪廓坐標點數(shù)組,然后在圖片輪廓內(nèi)應用方法一將內(nèi)凹部分摳去,最后才用多邊形區(qū)域創(chuàng)建函數(shù)摳去圖片外圍部分。程序如下:

  void __fastcall TForm1::FormCreate(TObject *Sender)  

  {
  
  register int x,y;

  int l,r;  

  POINT *a;  

  bool lb,rb;  

  HRGN WndRgn,TempRgn,tepRgn;  

  Width=800;Height=600;  

  if((a=(POINT *)malloc(800*4*(sizeof(POINT))))==NULL)  

  {  

  ShowMessage("申請內(nèi)存失??!");  

  exit(0);  

  }

  Image1->Picture->LoadFromFile(".\\face.bmp");  

  Width=Image1->Width;  

  Height=Image1->Height;  

  Repaint();  

  l=0;r=Image1->Height*2-1;  

  WndRgn=CreateRectRgn(0,0,Image1->Width,Image1->Height);  

  < //應用方法二產(chǎn)生輪廓坐標點數(shù)組  

  for(y=0;yHeight;y++)  

  {  

  lb=true;

  for(x=0;xWidth;x++)  

  if(Image1->Canvas->Pixels[x][y]!=clWhite)  

  {  

  a[l].x=x+1;  

  a[l].y=y;  

  lb=false;  

  break;  

  }  

  if(lb) a[l]=a[l-1];  

  l++;  

  rb=true;

  for(x=Image1->Width-1;x>=0;x--)  

  if(Image1->Canvas->Pixels[x][y]!=clWhite)  

  {  

  a[r].x=x;  

  a[r].y=y;  

  rb=false;  

  break;  

  }  

  if(rb) a[r]=a[r+1];  

  r--;  

  }  

  //應用方法一摳去圖片內(nèi)凹部分  

  r=Image1->Height*2-1;  

  for(y=0;yHeight;y++){  

  for(x=a[y].x;x

  if(Image1->Canvas->Pixels[x][y]==clWhite)  

  {  

  < tepRgn=CreateRectRgn(x,y,x+1,y+1);  

  CombineRgn(WndRgn,WndRgn,tepRgn,RGN_XOR);  

  DeleteObject(tepRgn);  

  }  

  r--;  

  }   

  //將圖片外圍部分摳去  

  TempRgn=CreatePolygonRgn(a,Image1->Height*2,ALTERNATE);  

  CombineRgn(WndRgn,WndRgn,TempRgn,RGN_AND);  

  DeleteObject(TempRgn);  

  free(a);  

  //顯示不規(guī)則窗體  

  SetWindowRgn(Handle,WndRgn,true);  

  SetWindowPos(Handle,HWND_TOP,0,0,0,0,SWP_NOMOVE SWP_NOSIZE);  

  }  

  至此,一個漂亮的程序界面就出現(xiàn)在你的屏幕上了。

相關頻道: eNews

您對本文或本站有任何意見,請在下方提交,謝謝!

投稿信箱:tougao@enet16.com