C#剪切自己指定位置的图片,高分!在线等!!!
如题:现在的代码:
Bitmap myBitmap = new Bitmap(pictureBox1.Image);
//2*i,2*j 分别为pictureBox1的长和宽
RectangleF cloneRect = new RectangleF(0, 0, 2*i, 2*j);
PixelFormat format = myBitmap.PixelFormat;
Bitmap cloneBitmap = myBitmap.Clone(cloneRect , format);
Graphics dc = this.pictureBox1.CreateGraphics();
dc.DrawImage(cloneBitmap, 0, 0);
截取的是从pictureBox1的左上角开始截的 不知道怎么才弄成按照自己设置的坐标截取,各位大侠帮忙看看,指导一下。。。不胜感激。。。 --------------------编程问答-------------------- 系统都是从左上角开始的,如果想要自己的坐标的话,就需要自己定义一个函数进行转换才行。 --------------------编程问答-------------------- 那怎么转换呢?
这些代码还是Copy的
汗一把。。。 --------------------编程问答-------------------- 大哥们,做不了不让下班了啊
哭。。。。
真的不会。。。。。
各位体谅一下好不???
我。。。
真的。。。。
很着急。。。。。
--------------------编程问答-------------------- 给你看个例子...记得自己先准备好图片哦
using System;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TestForm
{
public partial class Form1 : Form
{
Bitmap myBitmap = null;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Text = "Test";
//载入图片
myBitmap = new Bitmap("Grapes.jpg");
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button != MouseButtons.None)
{
// 截一块图(从鼠标位置开始200X200大小的一小块).
Rectangle cloneRect = new Rectangle(e.X, e.Y, 200, 200);
System.Drawing.Imaging.PixelFormat format =
myBitmap.PixelFormat;
Bitmap cloneBitmap = myBitmap.Clone(cloneRect, format);
// 显示截出来的图
this.CreateGraphics().DrawImage(cloneBitmap, e.X, e.Y);
}
}
}
} --------------------编程问答--------------------
裁剪的依然不是自己指定的啊
比如我指定的区域为(i,j,k,l)
怎么弄啊?
Rectangle cloneRect = new Rectangle(e.X, e.Y, 200, 200);
好像这个函数不是这样的意思啊,他的意思是将截取的图片填充到(e.x,e.y,200,200)区域内 --------------------编程问答-------------------- Rectangle cloneRect = new Rectangle(e.X, e.Y, 200, 200);
是截取原图中起点为e.X,e.Y,宽高为200,200的一块.
你如果指定为(i,j,k,l)意思就是从坐标i,j开始,宽K,高L的一块图像.
你想要的是不是这样? --------------------编程问答-------------------- VB写的代码
http://bbs.msproject.cn/default.aspx?g=posts&t=316
--------------------编程问答-------------------- http://faq.csdn.net/read/216309.html --------------------编程问答-------------------- 是的 我要的就是从坐标i,j开始,宽K,高L的一块图像.
--------------------编程问答-------------------- 4楼正解! --------------------编程问答-------------------- private void button1_Click(object sender, EventArgs e)
{
//创建窗体的Graphics对象
Graphics gSrc = pictureBox1.CreateGraphics();
HandleRef hDcSrc = new HandleRef(null, gSrc.GetHdc());
//获取宽度
int width = this.Width - SystemInformation.FrameBorderSize.Width;
//获取高度
int height = this.Height - SystemInformation.FrameBorderSize.Height + this.Top;
//复制图块的光栅操作码
const int SRCCOPY = 0xcc0020;
//用于保存图片的位图对象
Bitmap bmSave = new Bitmap(width, height);
//创建该位图的Graphics对象
Graphics gSave = Graphics.FromImage(bmSave);
//得到句柄
HandleRef hDcSave = new HandleRef(null, gSave.GetHdc());
BitBlt(hDcSave, 0, 0, width, height, hDcSrc, 0, 0, SRCCOPY);
//释放
gSrc.ReleaseHdc();
gSave.ReleaseHdc();
gSrc.Dispose();
gSave.Dispose();
bmSave.Save(@"D:\Capture.bmp");
//复制到剪切板
//Clipboard.SetImage(bmSave);
} --------------------编程问答-------------------- [DllImport("gdi32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]
public static extern int BitBlt(HandleRef hDC, int x, int y, int nWidth, int nHeight,
HandleRef hSrcDC, int xSrc, int ySrc, int dwRop);
补充:.NET技术 , C#