• 大小: 64KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-05-14
  • 语言: C#
  • 标签: 裁剪图片  矩形选框  

资源简介

一个简单的通过在PictureBox控件内建立可移动的矩形选框裁剪图片的小程序

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace PicCut
{
    public partial class MainWindow : Form
    {
        private const int AreaWidth = 512;       //pictureBox控件的最大宽度
        private const int AreaHeight = 384;     //pictureBox控件的最大高度
        //此宽高比为6:10,因具体需要而设,实际上可无高宽比限制

        private Rectangle m_Rect;                    // 矩形选框,用于截取图片

        private bool canMove = false;              //指定鼠标移动事件是否需要响应

        private int mouseLocationX = 0;          //初始化鼠标当前X坐标
        private int mouseLocationY = 0;          //初始化鼠标当前Y坐标

        private string picPath = null;               //图片路径
       
        public MainWindow()
        {
            InitializeComponent();
        }

        /*
         * 图片裁剪方法
         * param b:需裁剪的图片位图
         * param StartX:裁剪起始X坐标
         * param StartY:裁剪起始Y坐标
         * param iWidth:裁剪宽度
         * param iHeight:裁剪高度
         * */
        public static Bitmap KiCut(Bitmap b int StartX int StartY int iWidth int iHeight)
        {
            if (b == null)
            {
                return null;
            }

            int w = b.Width;
            int h = b.Height;
            if (StartX >= w || StartY >= h)
            {
                return null;
            }

            if (StartX + iWidth > w)
            {
                iWidth = w - StartX;
            }

            if (StartY + iHeight > h)
            {
                iHeight = h - StartY;
            }
            try
            {
                Bitmap bmpOut = new Bitmap(iWidth iHeight PixelFormat.Format24bppRgb);
                Graphics g = Graphics.FromImage(bmpOut);
                g.DrawImage(b new Rectangle(0 0 iWidth iHeight) new Rectangle(StartX StartY iWidth iHeight) GraphicsUnit.Pixel);
                g.Dispose();
                return bmpOut;
            }
            catch
            {
                return null;
            }
        }

        /*
         * 图片载入按钮单击事件响应
         * */
        private void load_Click(object sender EventArgs e)
        {
            using (OpenFileDialog openDlg=new OpenFileDialog())
            {
                openDlg.InitialDirectory = “.“;
                openDlg.Filter = “JPG File(*.jpg)|*.jpg|JPEG File(*.jpeg)|*.jpeg|PNG File(*.png)|*.png|BMP File(*.bmp)|*.bmp“;
                openDlg.RestoreDirectory = true;
                openDlg.FileName = “sourcePic“;
                if (openDlg.ShowDialog() == DialogResult.OK)
                {
                    picPath = openDlg.FileName;
                    if (picPath != null && System.IO.File.Exists(picPath))
                    {
                        //根据图片原始

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-09-01 08:56  PicCut\
     目录           0  2012-09-01 08:59  PicCut\PicCut\
     文件         908  2012-09-01 08:56  PicCut\PicCut.sln
     文件       35328  2012-09-01 19:48  PicCut\PicCut.v11.suo
     文件         187  2012-09-01 08:56  PicCut\PicCut\App.config
     目录           0  2012-09-01 08:59  PicCut\PicCut\bin\
     目录           0  2012-09-01 18:32  PicCut\PicCut\bin\Debug\
     文件       15872  2012-09-01 19:47  PicCut\PicCut\bin\Debug\PicCut.exe
     文件         187  2012-09-01 08:56  PicCut\PicCut\bin\Debug\PicCut.exe.config
     文件       30208  2012-09-01 19:47  PicCut\PicCut\bin\Debug\PicCut.pdb
     文件       22984  2012-09-01 19:47  PicCut\PicCut\bin\Debug\PicCut.vshost.exe
     文件         187  2012-09-01 08:56  PicCut\PicCut\bin\Debug\PicCut.vshost.exe.config
     文件         490  2010-03-17 22:39  PicCut\PicCut\bin\Debug\PicCut.vshost.exe.manifest
     目录           0  2012-09-01 08:59  PicCut\PicCut\bin\Release\
     文件       14004  2012-09-01 19:47  PicCut\PicCut\MainWindow.cs
     文件        6000  2012-09-01 18:42  PicCut\PicCut\MainWindow.Designer.cs
     文件        5817  2012-09-01 18:42  PicCut\PicCut\MainWindow.resx
     目录           0  2012-09-01 08:56  PicCut\PicCut\obj\
     目录           0  2012-09-01 19:47  PicCut\PicCut\obj\Debug\
     文件        1278  2012-09-01 18:32  PicCut\PicCut\obj\Debug\DesignTimeResolveAssemblyReferences.cache
     文件        6835  2012-09-01 08:59  PicCut\PicCut\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
     文件         569  2012-09-01 19:47  PicCut\PicCut\obj\Debug\PicCut.csproj.FileListAbsolute.txt
     文件         980  2012-09-01 18:42  PicCut\PicCut\obj\Debug\PicCut.csproj.GenerateResource.Cache
     文件        2143  2012-09-01 09:09  PicCut\PicCut\obj\Debug\PicCut.csprojResolveAssemblyReference.cache
     文件       15872  2012-09-01 19:47  PicCut\PicCut\obj\Debug\PicCut.exe
     文件         180  2012-09-01 18:42  PicCut\PicCut\obj\Debug\PicCut.MainWindow.resources
     文件       30208  2012-09-01 19:47  PicCut\PicCut\obj\Debug\PicCut.pdb
     文件         180  2012-09-01 09:09  PicCut\PicCut\obj\Debug\PicCut.Properties.Resources.resources
     文件           0  2012-09-01 08:56  PicCut\PicCut\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
     文件           0  2012-09-01 08:56  PicCut\PicCut\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
     文件           0  2012-09-01 08:56  PicCut\PicCut\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
............此处省略9个文件信息

评论

共有 条评论