零点教学网(www.0djx.com)-学电脑,学软件,学编程,学网站,学设计!

任意形状的窗体

零点教学网 c++教程 2020-07-11 01:08:02 24
Graphics::TBitmap* Spirite=new Graphics::TBitmap();
bool bkey=true;
int iCount=0;
TColor ColorKey=clWhite;
Spirite- LoadFromFile("D://bcbbak//resource//traffic.bmp");
Width=Spirite- Width;Height=Spirite- Height;
for(int i=0;i Spirite- Height;i++)
{
bkey=true;
for(int j=0;j Spirite- Width;j++)
{
if(Spirite- Canvas- Pixels[j][i]==ColorKey)
bkey=true;
else{ if(bkey) iCount++; bkey=false;}
}
}
byte* pData;
RGNDATA* pRgnData;
RECT* pRect;
int iIndex=0,iLeft=0;
pData=new Byte[sizeof(RGNDATAHEADER)+sizeof(RECT)*iCount];
pRgnData=(RGNDATA* )pData;
pRect=(RECT* )(pData+sizeof(RGNDATAHEADER));
pRgnData- rdh.dwSize= sizeof( RGNDATAHEADER ) ;
pRgnData- rdh.iType= RDH_RECTANGLES;
pRgnData- rdh.nCount= iCount;
pRgnData- rdh.nRgnSize = sizeof( RECT )*iCount;
pRgnData- rdh.rcBound.left= 0;
pRgnData- rdh.rcBound.top= 0;
pRgnData- rdh.rcBound.right=Spirite- Width;
pRgnData- rdh.rcBound.bottom=Spirite- Height;
for( int i=Spirite- Height-1;i i--) //因为Bitmap位图在Y方向是颠倒的所以要从底部开始
{
bkey = TRUE ; iLeft = -1;
for( int j=0;j Spirite- Width;j++)
{
if(Spirite- Canvas- Pixels[j][i]==ColorKey )
{if( !bkey )
{pRect[iIndex].left =iLeft;
pRect[iIndex].right=j;
pRect[iIndex].top=Spirite- Width-i-1;
pRect[iIndex].bottom=Spirite- Height-i;
bkey=TRUE ;iIndex++ ;iLeft=-1;
}
}
else if(bkey){iLeft=j; bkey=false;}
}
if(iLeft =0)
{
pRect[iIndex].left=iLeft ;
pRect[iIndex].right=Spirite- Width;
pRect[iIndex].top=i;
pRect[iIndex].bottom=i;
iIndex++;
}
}
bool br=ExtCreateRegion(NULL,sizeof( RGNDATAHEADER )+sizeof(RECT)*iCount,pRgnData);
if(!br) { ShowMessage("Create Form Failed."); Close(); }
delete[] pData;

 


如果以上内容你喜欢,请持续关注:零点教学网软件编程教程栏目

分享:

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://0djx.com/ruanjianbianchengjiaocheng/cjj/10625.html

  用c语言道歉代码大全   任意形状的窗体   零点教学网C++教程   免费下载任意形状的窗体  

(24)
打赏 微信扫一扫
« 上一篇 2020年07月11日 01:07:00
下一篇 » 2020年07月11日 01:08:51

任意形状的窗体_相关内容

免费下载任意形状的窗体_相关内容