当前位置:编程学习 > C#/ASP.NET >>

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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,