截取部分图片问题,大哥请进,着急

jidaujn0301 2010-01-08 08:39:19
有一幅大图片显示在picturebox1上,将属性设为StretchImage后,图片按照属性缩小,想在小图片上截取矩形框保存,我用程序截取保存后,保存后的图片仍为原图片的位置,请问题这个问题怎样解决.
就是想在设为StretchImage属性后的图片框上截取想要的图.
Bitmap s_image = new Bitmap(range.Width, range.Height);
Graphics s_graphics = Graphics.FromImage(s_image);
s_graphics.DrawImage(pictureBox1.Image, 0, 0, new RectangleF(range.X, range.Y, range.width,range.heith), GraphicsUnit.Pixel);
s_image.Save(@"f:\8.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
...全文
269 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
麦田追风 2010-01-09
  • 打赏
  • 举报
回复
你的意思就是要把图片缩小吧
你写的代码没有改变s_image
可以用DrawImage方法将图片画在一个设定范围内
你得先获取这个范围,就是图片的长宽
mngzilin 2010-01-09
  • 打赏
  • 举报
回复
使用RectangleF可以取到矩形框的矩形,

如果你将图片缩放了话,需要按比例计算RectangleF的实际大小

实例:

/*Bitmap MyImage = new Bitmap("C:/test.BMP");
RectangleF part = new RectangleF(0, 0, 400, 400);//像素矩阵
Bitmap s = MyImage.Clone(part, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
yingkk 2010-01-09
  • 打赏
  • 举报
回复

private Bitmap cutImage(Bitmap bmp, Rectangle rectangle)
{
return bmp.Clone(rectangle, bmp.PixelFormat);
}
jidaujn0301 2010-01-09
  • 打赏
  • 举报
回复
我最后用的bitblt函数
可以实现我想要的
多谢谢了各位
jidaujn0301 2010-01-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]
Bitmap bmp=new Bitmap(range.Width,range.Height);
pictureBox1.Image = pictureBox1.DrawToBitmap(bmp, range);
[/Quote]
在吗,我的矩形框是可移动的,我只要移动就保存不到想要的图片了,矩形框位置不变是可以截取到的,再帮一下好吗
jidaujn0301 2010-01-08
  • 打赏
  • 举报
回复

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (range.Contains(e.X, e.Y))
{
drawflag = true;
m_point = new Point(e.X, e.Y);
}
}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (drawflag == true)
{
range = new Rectangle(range.X + e.X - m_point.X, range.Y + e.Y - m_point.Y, range.Width, range.Height);
m_point = new Point(e.X, e.Y);
this.pictureBox1.Invalidate();
}
}

private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
drawflag = false;
}

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawRectangle(new Pen(Color.Black), range);
//Graphics g = Graphics.FromHwnd(this.pictureBox1.Handle);
//g.DrawRectangle( new Pen(Color.Black), range);
}
jidaujn0301 2010-01-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jidaujn0301 的回复:]
有大哥来看看吗,在线等呢
[/Quote]
在吗,我的矩形框是可移动的,我只要移动就保存不到想要的图片了,矩形框位置不变是可以截取到的,再帮一下好吗
wuyq11 2010-01-08
  • 打赏
  • 举报
回复
Bitmap bmp=new Bitmap(range.Width,range.Height);
pictureBox1.Image = pictureBox1.DrawToBitmap(bmp, range);
jidaujn0301 2010-01-08
  • 打赏
  • 举报
回复
有大哥来看看吗,在线等呢

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧