代码的话参照
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("申请内存失败!");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);< //应用方法二产生轮廓坐标点数组for(y=0;y<Image1->Height;y++){lb=true;for(x=0;x<Image1->Width;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--;}//应用方法一抠去图片内凹部分r=Image1->Height*2-1;for(y=0;y<Image1->Height;y++){for(x=a[y].x;x<a[r].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);//显示不规则窗体SetWindowRgn(Handle,WndRgn,true);SetWindowPos(Handle,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);}

解决方案 »

  1.   

    怎么改呀????????????????????
      

  2.   

    您好
    我是本版版主
    此帖已多日无人关注
    请您及时结帖
    如您认为问题没有解决可按无满意结帖处理
    另外本版设置了疑难问题汇总帖
    并已在版面置顶
    相关规定其帖子中有说明
    您可以根据规定提交您帖子的链接
    如您目前不想结帖只需回帖说明
    我们会删除此结帖通知见此回复三日内无回应
    我们将强制结帖
    相关规定详见界面界面版关于版主结帖工作的具体办法