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

又一个100分,还是摄像头捕获照相问题,散了几百分还没有解决.高手请进

楼主nangangshi(小米)2006-05-04 08:27:17 在 .NET技术 / C# 提问

在panel控件中显示了摄像头内容,现在就是想在panel中放置一个矩形框,可以用鼠标移动,移到哪个位置按"照相"按钮就把矩形框中的内容显示在picture控件中并保存为jpeg文件.  
   
  现在的问题是还没有解决,问题是在panel上画矩形框可以画,但是一旦显示摄像头内容后,矩形框到后面去了,停止显示摄像头内容后,矩形框还在.  
   
  有人说用两个panel,一个设为透明,但是在winForm中VS2005设置不了,有人说重画矩形框,但我试了也没用,高手,请帮忙解决,最好能给个例子   ,谢了. 问题点数:100、回复次数:10Top

1 楼Knight94(愚翁)回复于 2006-05-04 09:05:27 得分 30

to   有人说用两个panel,一个设为透明,但是在winForm中VS2005设置不了,有人说重画矩形框,但我试了也没用,  
   
  panel透明是没用的,因为vs得透明机制比较怪,如果设置panel透明,并不会透明显示下层控件内容,而是显示底层窗体内容;  
  重画矩形框,基本也不可取,仅适合于图像静止才有用,毕竟摄像头的内容是变化的,它的刷新并不会触发panel的onpaint事件。  
   
  目前想到最简单的方法,就是做一个transparent的form,然后把它加载到显示摄像头的panel中,并设为topmost,用它来代替原有透明panel的作用。Top

2 楼deninghe(毛毛虫ァ野战军->挺进中原)回复于 2006-05-04 11:49:20 得分 5

markTop

3 楼nangangshi(小米)回复于 2006-05-04 14:51:22 得分 0

还有没有更好的办法?或自己写控件,应该怎么写?Top

4 楼Knight94(愚翁)回复于 2006-05-04 16:36:55 得分 10

to   还有没有更好的办法?或自己写控件,应该怎么写?  
   
  如果是图像静止则比较简单,但是如果是动态显示则比较麻烦。  
  由于目前都是用directshow来显示从摄像头过来的数据,因此你无法直接在paint事件中去做处理,只能在directshow上处理,这方面需要去看directx的SDK了。  
   
  Top

5 楼Knight94(愚翁)回复于 2006-05-04 16:39:07 得分 10

如果不是抓取一帧一部分,也是比较容易的,这可以参看  
  http://www.codeproject.com/csharp/motion_detection.aspTop

6 楼nangangshi(小米)回复于 2006-05-04 21:57:46 得分 0

高手请进,自顶.Top

7 楼woanon(嗳老虎游)回复于 2006-05-04 23:04:51 得分 5

不错的讨论哦,关注Top

8 楼misvcom(零下一度)回复于 2006-05-05 01:12:32 得分 40

VS2005能不能把panel设成透明我没试过,我是在VS2003下面做的。的确可以将两个Panel的内容重叠,能看到下面那个Panel中的图片。  
   
  如果用到directx的SDK的话,你的问题会变得很麻烦,以前做过类似的应用,但手上没有现成的代码,无能为力。  
   
  再不行的话你可以在VS2005下面用.NET   1.1的Panel的啊,不过这我也没试过,不知实际效果如何Top

9 楼lockon123()回复于 2006-10-29 20:46:30 得分 0

这几天也碰到这个问题,暂时的解决方案:  
  每秒15次定时将视频窗口截屏,得到一个Bitmap,然后在这个Bitmap里面画矩形,放到一个pictureBox里面。  
  问题就是有两个窗口,有点怪。  
   
  还可以将pictureBox和视频窗口重叠起来,但有闪烁感。  
   
   
  private   void   timer1_Tick(object   sender,   EventArgs   e)  
                  {  
                       
   
                                  CapScr   cs   =   new   CapScr();  
                                  Bitmap   img   =   cs.CaptureScreen((int)pictureBox3.Handle,iwidth,   iheight,   0,   0);  
                                   
                                  Graphics   g   =   Graphics.FromImage(img);  
                                   
                                  Rectangle   rect   =   new   Rectangle(85,   40,   150,   200);  
   
   
                                  Pen   pen1   =   new   Pen(Color.Red,   5);  
   
                                  g.DrawRectangle(pen1,   rect);  
                                  g.Dispose();  
   
                                  pictureBox1.Image   =   img;  
                  }  
  Top

10 楼lockon123()回复于 2006-10-30 10:57:45 得分 0

再研究了一下:  
  1。   Knight94(愚翁)  
     
  "目前想到最简单的方法,就是做一个transparent的form,然后把它加载到显示摄像头的panel中,并设为topmost,用它来代替原有透明panel的作用。"  
  这个办法是可行的。  
   
  2。做一个TransparentPanel类,从Panel继承:  
    class   TransparentPanel   :   Panel  
          {  
   
                  public   TransparentPanel()  
                  {  
   
   
                  }  
   
                  //This   method   makes   sure   that   the   background   is   what   is   directly   behind   the   control  
   
                  //and   not   what   is   behind   the   form...  
   
                  override   protected   CreateParams   CreateParams  
                  {  
   
                          get  
                          {  
   
                                  CreateParams   cp   =   base.CreateParams;  
   
                                  cp.ExStyle   |=   0x20;  
   
                                  return   cp;  
   
                          }  
   
                  }  
   
                  override   protected   void   OnPaintBackground(PaintEventArgs   e)  
                  {  
   
                          //   do   nothing  
   
                  }  
   
          }  
   
   
       
     
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:nangangshi
  • Knight94
  • deninghe
  • Knight94
  • Knight94
  • woanon
  • misvcom

相关链接

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

广告也精彩

反馈

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