CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

寻求高人将C++代码转换为C#代码

楼主qiezic(破晓)2005-07-19 15:45:18 在 .NET技术 / C# 提问

程序中首先应用方法二对图片双向扫描,产生轮廓坐标点数组,然后在图片轮廓内应用方法一将内凹部分抠去,最后才用多边形区域创建函数抠去图片外围部分。程序如下:  
  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);  
  }  
   
   
   
  原文地址:http://cnprogram.diy.myrice.com/article/cbuilder/cbuilder58.html  
   
  没空帮忙的帮忙顶顶,谢谢! 问题点数:30、回复次数:11Top

1 楼qiezic(破晓)回复于 2005-07-19 17:16:25 得分 0

upTop

2 楼shrinerain(圣影雨)回复于 2005-07-19 18:44:03 得分 6

把::和->改.  
  指针改成相应类型。。。Top

3 楼zhilunchen(他山居士)回复于 2005-07-19 20:22:40 得分 6

两种语言不兼容,对照语法改改Top

4 楼qiezic(破晓)回复于 2005-07-20 09:28:58 得分 0

不知这三句在C#里怎么表达  
  <   tepRgn=CreateRectRgn(x,y,x+1,y+1);  
  CombineRgn(WndRgn,WndRgn,tepRgn,RGN_XOR);  
  DeleteObject(tepRgn);Top

5 楼zjh135(aaa)回复于 2005-07-20 09:36:52 得分 6

为什么要改呢,C++是挺好的嘛,有些人写C++也写不好呢?再说,C++中的语法表现在C#是实现不了的或实现很难呢,首先一点就是C++能操作内存而C#是不能的,C++表现丰富C#并不是那样的!!!三思Top

6 楼qiezic(破晓)回复于 2005-07-20 11:27:40 得分 0

哎,我要是会C++就不用在这发帖了!  
  C++是好但是不会啊!Top

7 楼abiho(迷路的打工者(只有不会做的程序员,没有不讲道理的客户))回复于 2005-07-20 11:36:30 得分 6

你还是搜索一下C#实现不规则窗体的方法吧,我觉得C#实现更简单!Top

8 楼qiezic(破晓)回复于 2005-07-20 11:42:28 得分 0

C#实现不规则窗体的方法是很简单,但缺陷太大,比如背景图透明必须要求系统颜色深度小于24等。  
   
  现在我想自画边框,但是还的自己扫描颜色分界点,实在麻烦。  
   
  有人能帮我把上面的代码编译成C++的DLL文件让我在C#调用吗。  
  拜托了!Top

9 楼qiezic(破晓)回复于 2005-07-20 13:46:38 得分 0

upTop

10 楼qiezic(破晓)回复于 2005-07-20 15:25:53 得分 0

upTop

11 楼csdnzm(明飞)回复于 2005-07-21 13:03:05 得分 6

upTop

相关问题

  • 把c#代码转换成vb.net代码?
  • vbscript代码转换成C#代码
  • vb.net 代码转换为C#代码.......
  • 求BMP转换JPG的C代码!~~
  • 怎样将标准的C++代码转换成JAVA代码??
  • c直方图代码转换为bcb代码 100分~
  • 100分急求,C语言代码转换为Pascal代码?
  • 急!! Delphi 代码转换为 C 代码.... ( 我写的有错?? )
  • 急!! Delphi 代码转换为 C 代码.... ( 我写的有错?? )
  • 下面代码中的部分vb.net代码怎么转换为c#代码

关键词

  • c#
  • image1
  • height
  • 图片
  • point
  • width

得分解答快速导航

  • 帖主:qiezic
  • shrinerain
  • zhilunchen
  • zjh135
  • abiho
  • csdnzm

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo