C#处理PictureBox中图像的问题,度娘回答不知道,只能来这里求助了

问题描述

我用PictureBox打开一张图,假如尺寸是800px*600px,我现在需要在PictureBox中的这张图截取一部分,换句话说,我需要这张图的中间一部分,如果用Rectangle(x,y,width,height)来说明的话,原图是Rectangle(0,0,800,600),我现在需要截取出来Rectangle(300,100,400,200)这么一个区域的图像并保存。我是在解决不了了,烦请各位大神出手相救

解决方案

解决方案二:
1计算PictureBox和实际Image的比例(楼主的示例中为1:1)2根据这个比例关系计算PictureBox控件上选取的点映射到PictureBox.Image中的实际坐标3用GDI+中的DrawImage函数截取出需要的图片4用Save函数保存。
解决方案三:
更正,如果图片和空间尺寸都是800*600才是1:1
解决方案四:
根据PictureBox的设置不同,图像有可能被拉伸所以应该截取原图(image),而不是PictureBox控件显示的图像比例需要自己算
解决方案五:
看下我博客里面那个拼图游戏的demo,那个有等比例截图的代码的
解决方案六:
Imagesource=PictureBox.Image;Rectanglerect=newRectangle(300,100,400,200);Bitmapbmp=newBitmap(rect.Width,rect.Height);Graphicsg=Graphics.FromImage(bmp);RectanglerectDes=newRectangle(0,0,bmp.Width,bmp.Height);g.DrawImage(source,rectDes,rect,GraphicsUnit.Pixel);bmp.Save("C:\test.jpg",ImageFormat.Jpeg);

解决方案七:
首先感谢几位大神的帮助,尤其是5楼的代码,相当有用,但是测试中问题来了,5楼的代码在图片与控件尺寸1:1的时候能用,当然就算不是1:1的时候也可以用,那就是需要像1楼上说的计算映射比例的问题,但是我想要的最终效果是另外一种,想了一早晨还是没做出来,我也许太笨了。其实我最终需要的是一个像PS那样的裁切功能,通过代码改变PictureBox的大小,然后在一个固定大小的窗口中适应,到了我满意的时候,我可以拖拽PictureBox移动,换句话说,就是相机的取景框的意思,随着我相机的移动,取景框中的图像是不一样的,当我按下快门的时候,相机所记录的是我取景框的图像,并且像素尺寸是固定的,回过头来说,我在取景框中把PictureBox中的部分图像选择好,我现在要通过程序生成一个新图像,固定大小。原图:800px*600px取景框:320px*280px需求:等比缩放原图或者截取部分缩放
解决方案八:
不太明白你的意思,不知道PictureBox的SizeMode设置为:AutoSize是不是你要的效果。当然为了界面好看,你可能还要在PictureBox外面套个Panel什么的。
解决方案九:
这次在度娘找到一个插值算法,基本可行,回来我把代码完善一下,发上来,和大家分享,到时候再结贴,其实qbilbo大哥你就差一个插值算法了,加上那个基本上就是我想要的结果了
解决方案十:
///<summary>///获取等比例缩放的图片(高宽不一致时获取最中间部分的图片)///</summary>///<paramname="fromImage"></param>///<paramname="width">要获取的宽度</param>///<paramname="height">要获取的高度</param>///<returns></returns>publicstaticImageAdjImageToFitSize(thisImagefromImage,intwidth,intheight){Bitmapbitmap=newBitmap(width,height);Graphicsgraphics=Graphics.FromImage(bitmap);Pointpoint=newPoint(0,0);Pointpoint2=newPoint(width,0);Pointpoint3=newPoint(0,height);Point[]destPoints=newPoint[]{point,point2,point3};Rectanglerect=GetImageRectangle(fromImage);graphics.DrawImage(fromImage,destPoints,rect,GraphicsUnit.Pixel);Imageimage=Image.FromHbitmap(bitmap.GetHbitmap());bitmap.Dispose();graphics.Dispose();returnimage;}privatestaticRectangleGetImageRectangle(ImagefromImage){//居中位置获取intx=0;inty=0;intheight=fromImage.Height;intwidth=fromImage.Width;if(fromImage.Height>fromImage.Width){height=fromImage.Width;y=(fromImage.Height-fromImage.Width)/2;}else{width=fromImage.Height;x=(fromImage.Width-fromImage.Height)/2;}returnnewRectangle(x,y,width,height);}

让你参考你就是不肯参考啊……
解决方案十一:
引用9楼starfd的回复:

让你参考你就是不肯参考啊……

楼主是懒的他就希望拖个控件,设置几个属性,然后就能实现裁剪,移动裁剪位置这样的功能
解决方案十二:
看样子像是自定义选区截图,网上有例子的

时间: 2024-09-17 04:45:27

C#处理PictureBox中图像的问题,度娘回答不知道,只能来这里求助了的相关文章

度娘到底想干嘛!难道年底要来个大屠杀吗?

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 今年以来度娘的动荡一直没有停息过,从今年年初的起源算法.绿萝算法.一直到绿萝2.0升级版的不断的演变升级,在这一过程中有喜也有悲,但"悲"的成分笔者认为较多,谈到这里可能就会有的站长会问到,"悲"在何处,又何谈"悲"的成分比较多呢?在今年以来笔者一直关注度娘搜索引擎算法的变化,同时也

vb.net(basler相机SDK抓取图像数据流后,将图片显示在picturebox中)

问题描述 vb.net(basler相机SDK抓取图像数据流后,将图片显示在picturebox中) vs2012,vb.net编程,basler相机的sdk取像得到数据流后basler有自己的方法显示图片,但我不要中他的方法,我要显示在自己的picturebox控件中,自己写了一段程序,如图,102行一直提示说参数无效,求解! 解决方案 图太小了,看不见.你可以先保存为bmp 用picturebox1.Image = Image.FromFile(文件)

[请教]C# 读取数据库中的图片由byte[]转化成图像并在pictureBox中显示出来 遇到问题

问题描述 我使用的是动软代码生成器生成的简单三层结构的代码.我的目的是把数据库中的图片由byte[]转化成图像并在pictureBox中显示出来,BLL.CashBackmyBLLCashBack=newBLL.CashBack();Model.CashBackmyModelCashBack=newModel.CashBack();myModelCashBack=myBLLCashBack.GetModel(1001);MemoryStreamms=newMemoryStream();//新建内

C#图像处理 如何使用内存法将彩色图像转换为灰度图像并保存到picturebox中!!!

问题描述 C#图像处理我先打开一幅彩色图像到picturebox中,然后我想用内存法将这幅彩色图像(已经在picturebox)转换为灰度图像,并显示在同一个picturebox中请问这怎么实现?(现在我可以进行打开一幅图片,将图片显示到picturebox中,以及我明白内存法的原理,但就是不能将图片用内存法转换为灰度图像并显示在picturebox中) 解决方案 解决方案二:什么是内存法?解决方案三:图像处理中我看资料的时候,上面提及C#图像处理的3种方法,一是提取像素法二是内存法三是指针法,

让picturebox中的图片任意旋转一定角度的方法,求详解!!!!

问题描述 让picturebox中的图片任意旋转一定角度的方法,求详解!!!! 让指针旋转 求大牛指点 !! 谢谢了 解决方案 两种方法:1,指针图片旋转,也就是用图像处理的技术让图片旋转:2,直接旋转pictureBox,设置pictureBox的相关旋转属性. 解决方案二: public Bitmap Rotate(Bitmap b, int angle) { angle = angle % 360; //弧度转换 double radian = angle * Math.PI / 180.

【求助】C# 如何在picturebox中截取多边形

问题描述 如题我把图像以读入picurebox,代码如下tempBmp=(Bitmap)Bitmap.FromFile(openDialog.FileName);PicWidth=tempBmp.Width;//保存图像宽度PicHeight=tempBmp.Height;//保存图像高度originalPicture.Image=tempBmp;多边形的坐标是获取鼠标右击时的坐标,存入ArrayListpointArr中了,请问如何把pointArr数组点包含的图像在另一个picturebox

vb.net中实现picturebox中图片拖动和label控件数组结合,实现label和图片同步

控件|数组   在前面的文章中,提到过在vb.net中实现picturebox中图片拖动,以及控件数组方面的东西. 因为项目需要,我要实现的是,图片上有各个站点的名称,我要实现点击相应的名称,进入站点,查看相应的信息.我采取的是在图片上放一系列的label,然后点击label,进入相应的站点,这样就遇到了一个问题,要实现在拖动图片的同时,所有的label也同步拖动. 下面的代码实现了这个功能: Imports System.DrawingNamespace WinForm.Main    Pub

.net中PictureBox中图片的拖动

  .net中PictureBox中图片的拖动首先在Form窗体上放一个PictureBox,并指定一个图片显示 定义一系列变量处理图片拖动 '处理图片拖动        Private m_Leftx As Integer         Private m_Lefty As Integer         Dim m_MousePosX As Integer        Dim m_MousePosY As Integer        Dim m_DriftX As Integer   

Coreldraw中图像与输出位图后大小不一致怎么办

问:Coreldraw中图像与输出位图后大小不一致,怎么办? 在Coreldraw里做图,用100%显示的时候并不觉得大,当导出为JPEG格式时,图像却比在Coreldraw里看到的大出很多.为什么?怎么办? 答: Coreldraw默认分辨率是300象素,如果你输出JPG比这个分辨率小,看起来肯定要大. 输出JPEG格式,要注意分辨率,放网上看看的一般72/96DIP,一般用于打印的150DPI,用于印刷的300DPI以上. 如果想按Coreldraw中的实际大小输出,记得选择1:1,还要在大