<% dim ModuleName,InfoID,ChannelShortName,CorrelativeArticle,InstallDir,ChannelDir,Keyword,PageTitle,ArticleIntro,Articlecontent Keyword=stripHTML("vc,不规则窗体") PageTitle=stripHTML("vc里实现不规则窗体") ArticleIntro=stripHTML("") Articlecontent=stripHTML("首先建立一个MFC工程Test  2.准备两张位图,一张显示位图,另一个张是掩摸遮盖图片  3。在类中添加一个CBitmap m_bmp;的成员变量  4.添加…") ModuleName = stripHTML("programme") InfoID = stripHTML("116198") ChannelShortName=stripHTML("编程") InstallDir=stripHTML("http://www.77169.com/") ChannelDir=stripHTML("programme") %> vc里实现不规则窗体 - 华盟网 - http://www.77169.com
您现在的位置: 华盟网 >> 编程 >> Vc >> 正文

vc里实现不规则窗体

2013/6/27 作者:不详 来源: 华盟收集
导读 <% if len(ArticleIntro)<3 then Response.Write Articlecontent 'Response.Write "Articlecontent" else Response.Write ArticleIntro 'Response.Write "ArticleIntro" end if %>

  首先建立一个MFC工程Test

  2.准备两张位图,一张显示位图,另一个张是掩摸遮盖图片

  3。在类中添加一个CBitmap m_bmp;的成员变量

  4.添加一成员函数,它的的功能就是设置不规则窗体

  void CTest1::SetupRegion(CDC *pDC, CBitmap &cBitmap, COLORREF TransColor)

  {

  CDC memDC;

  CBitmap *pOldMemBmp=NULL;

  BITMAP bit;

  CRect rect;

  GetWindowRect(rect);

  CRgn wndRgn;

  //创建与传入DC兼容的临时DC

  memDC.CreateCompatibleDC(pDC);

  //取得位图参数,这里要用到位图的长和宽

  cBitmap.GetBitmap (&bit);

  //将位图选入临时DC

  pOldMemBmp=memDC.SelectObject(&cBitmap);

  //创建总的窗体区域,初始region为0

  wndRgn.CreateRectRgn(0,0,rect.Width(),rect.Height());

  for(int y=0;y

  {

  CRgn rgnTemp; //保存临时region

  int iX = 0;

  do

  {

  //等于透明色时,消除后透明色找到下一个非透明色的点.

  if (memDC.GetPixel(iX, y) == TransColor)

  {

  rgnTemp.CreateRectRgn(iX,y,iX+1,y+1);

  //合并到主"region".

  wndRgn.CombineRgn(&wndRgn, &rgnTemp, RGN_XOR);

  //删除临时"region",否则下次创建时和出错

  rgnTemp.DeleteObject();

  }

  iX++;

  }while(iX

  iX = 0;

  }

  if(pOldMemBmp)

  memDC.SelectObject(pOldMemBmp);

  SetWindowRgn(wndRgn,TRUE);

  SetForegroundWindow();

  }

  5。在初始化函数中调用上面的函数

  BOOL CTestDlg::OnInitDialog()

  {

  CClientDC dc(this);

  SetupRegion(&dc,m_bmp,RGB(255,255,255));

  return TRUE;

  }

  6。在OnPaint()函数中显示设备位图

  void CTestDlg::OnPaint()

  {

  CRect rtWindow;

  GetWindowRect(&rtWindow);

  CPaintDC dc(this); // device context for painting

  // TODO: Add your message handler code here

  CDC picDC;

  picDC.CreateCompatibleDC (&dc);//创建图形设备

  CBitmap *pOldBmp;

  pOldBmp = picDC.SelectObject (&m_bmp);//选择图形设备

  BITMAP bm;

  m_bmp.GetBitmap(&bm);//获得位图

  dc.BitBlt (-3,-3,rtWindow.Width(),rtWindow.Height(),&picDC,0,0,SRCCOPY);//显示图象

  }



  • 上一篇编程:

  • 下一篇编程: