亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

c#圖片處理之圖片裁剪成不規(guī)則圖形

 更新時(shí)間:2014年05月06日 10:29:42   作者:  
最近項(xiàng)目要求實(shí)現(xiàn)不規(guī)則裁剪功能。本來想用html5的canvas在前端實(shí)現(xiàn)的,但是發(fā)現(xiàn)有點(diǎn)困難,以下為C#端對(duì)圖對(duì)片的處理

為了讓大家知道下面內(nèi)容是否是自己想要的,我先發(fā)效果圖。

好了,那就開始貼代碼了

以下為一個(gè)按鈕的事件,為裁剪準(zhǔn)備圖片、裁剪路徑、保存路徑

復(fù)制代碼 代碼如下:

private void button1_Click(object sender, EventArgs e)
        {
            GraphicsPath path = new GraphicsPath();
            Point[] p = {
                            new Point(424,244),
                            new Point(240,440),
                            new Point(340,552),
                            new Point(550,526),
                            new Point(478,366),
                            new Point(348,660),
                            new Point(424,244)
                        };
            path.AddLines(p);
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Filter = @"Bitmap文件(*.bmp)|*.bmp|Jpeg文件(*.jpg)|*.jpg|所有合適文件(*.bmp,*.jpg)|*.bmp;*.jpg";

            openFileDialog.FilterIndex = 3;

            openFileDialog.RestoreDirectory = true;

            if (DialogResult.OK == openFileDialog.ShowDialog())
            {

                Bitmap bit = (Bitmap)Bitmap.FromFile(openFileDialog.FileName, false);

                Bitmap newBit = null;
                BitmapCrop(bit, path, out newBit);
                newBit.Save(@"C:\Users\Public\Pictures\Sample Pictures\沙漠22.jpg");
            }
        }

以下為裁剪的關(guān)鍵代碼

復(fù)制代碼 代碼如下:

/// <summary>
        /// 圖片截圖
        /// </summary>
        /// <param name="bitmap">原圖</param>
        /// <param name="path">裁剪路徑</param>
        /// <param name="outputBitmap">輸出圖</param>
        /// <returns></returns>
        public static Bitmap BitmapCrop(Bitmap bitmap, GraphicsPath path, out Bitmap outputBitmap)
        {
            RectangleF rect = path.GetBounds();
            int left = (int)rect.Left;
            int top = (int)rect.Top;
            int width = (int)rect.Width;
            int height = (int)rect.Height;
            Bitmap image = (Bitmap)bitmap.Clone();
            outputBitmap = new Bitmap(width, height);
            for (int i = left; i < left + width; i++)
            {
                for (int j = top; j < top + height; j++)
                {
                    //判斷坐標(biāo)是否在路徑中  
                    if (path.IsVisible(i, j))
                    {
                        //復(fù)制原圖區(qū)域的像素到輸出圖片  
                        outputBitmap.SetPixel(i - left, j - top, image.GetPixel(i, j));
                        //設(shè)置原圖這部分區(qū)域?yàn)橥该?nbsp; 
                        image.SetPixel(i, j, Color.FromArgb(0, image.GetPixel(i, j)));
                    }
                    else
                    {
                        outputBitmap.SetPixel(i - left, j - top, Color.FromArgb(0, 255, 255, 255));
                    }
                }
            }
            bitmap.Dispose();
            return image;
        }

有了這個(gè)前臺(tái)只需要獲取用戶的鼠標(biāo)路徑傳到后臺(tái)就可以。

相關(guān)文章

  • C#線程間不能調(diào)用剪切板的解決方法

    C#線程間不能調(diào)用剪切板的解決方法

    這篇文章主要介紹了C#線程間不能調(diào)用剪切板的解決方法,需要的朋友可以參考下
    2014-07-07
  • 淺談Java與C#的一些細(xì)微差別

    淺談Java與C#的一些細(xì)微差別

    說起C#和Java這兩門語言(語法,數(shù)據(jù)類型 等),個(gè)人以為,大概有90%以上的相似,甚至可以認(rèn)為幾乎一樣。但是在工作中,我也發(fā)現(xiàn)了一些細(xì)微的差別
    2013-11-11
  • 淺談C#基礎(chǔ)之類的訪問修飾符

    淺談C#基礎(chǔ)之類的訪問修飾符

    淺談C#基礎(chǔ)之類的訪問修飾符,需要的朋友可以參考一下
    2013-03-03
  • UnityShader3實(shí)現(xiàn)2D描邊效果

    UnityShader3實(shí)現(xiàn)2D描邊效果

    這篇文章主要為大家詳細(xì)介紹了UnityShader3實(shí)現(xiàn)2D描邊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C#圖像線性變換的方法

    C#圖像線性變換的方法

    這篇文章主要介紹了C#圖像線性變換的方法,涉及C#操作圖像線性變換的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • 使用C#實(shí)現(xiàn)基于TCP和UDP協(xié)議的網(wǎng)絡(luò)通信程序的基本示例

    使用C#實(shí)現(xiàn)基于TCP和UDP協(xié)議的網(wǎng)絡(luò)通信程序的基本示例

    這篇文章主要介紹了使用C#實(shí)現(xiàn)基于TCP和UDP協(xié)議的網(wǎng)絡(luò)通信程序的示例,文中分別編寫了基本的服務(wù)器端和客戶端,代碼十分簡(jiǎn)單,需要的朋友可以參考下
    2016-04-04
  • C#中的==運(yùn)算符

    C#中的==運(yùn)算符

    這篇文章主要介紹了C#中的==運(yùn)算符,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-06-06
  • C#版Tesseract庫(kù)的使用技巧

    C#版Tesseract庫(kù)的使用技巧

    本文給大家分享C#版Tesseract庫(kù)的使用技巧,在這里大家需要注意一下tesseract的識(shí)別語言包要自己下載后包含到項(xiàng)目里面,并設(shè)置為始終復(fù)制,或者直接把這個(gè)文件包放到運(yùn)行程序目錄(bin\debug)下的,具體實(shí)現(xiàn)代碼跟隨小編一起學(xué)習(xí)下吧
    2021-05-05
  • C# Mqtt 斷線重連的實(shí)現(xiàn)代碼

    C# Mqtt 斷線重連的實(shí)現(xiàn)代碼

    這篇文章主要介紹了C# Mqtt 斷線重連,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • C#如何檢測(cè)操作系統(tǒng)版本

    C#如何檢測(cè)操作系統(tǒng)版本

    這篇文章主要為大家詳細(xì)介紹了C#如何檢測(cè)操作系統(tǒng)版本的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10

最新評(píng)論