国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C# > 正文

C#實(shí)現(xiàn)圖片切割、切圖、裁剪

2020-01-24 00:11:23
字體:
供稿:網(wǎng)友

本文實(shí)例為大家分享了C#實(shí)現(xiàn)圖片切割、切圖的具體代碼,供大家參考,具體內(nèi)容如下

前臺(tái)準(zhǔn)備兩個(gè)Image控件。上面是顯示原圖,下面顯示切割后的效果。

<StackPanel Orientation="Vertical"> <Image Width="450" Height="383" Source="C:/Users/Administrator/Documents/Visual Studio 2015/Projects/SplitPic/SplitPic/Images/1.jpg"/> <Image x:Name="img" Stretch="None" Width="450" Height="383" /></StackPanel>

對(duì)應(yīng)的后臺(tái)代碼:

public partial class MainWindow : Window{ public MainWindow() { InitializeComponent(); // 設(shè)置原圖 img.Source = new BitmapImage(new Uri(@"Images/1.jpg", UriKind.Relative)); // 切割圖片 ImageSource imageSource = img.Source; Bitmap bitmap = SystemUtils.ImageSourceToBitmap(imageSource); BitmapSource bitmapSource = SystemUtils.BitmapToBitmapImage(bitmap); BitmapSource newBitmapSource = SystemUtils.CutImage(bitmapSource, new Int32Rect(125, 60, 235, 285)); // 使用切割后的圖源 img.Source = newBitmapSource; }}// 圖像工具類public static class SystemUtils{ /// <summary> /// 切圖 /// </summary> /// <param name="bitmapSource">圖源</param> /// <param name="cut">切割區(qū)域</param> /// <returns></returns> public static BitmapSource CutImage(BitmapSource bitmapSource, Int32Rect cut) { //計(jì)算Stride var stride = bitmapSource.Format.BitsPerPixel * cut.Width / 8; //聲明字節(jié)數(shù)組 byte[] data = new byte[cut.Height * stride]; //調(diào)用CopyPixels bitmapSource.CopyPixels(cut, data, stride, 0); return BitmapSource.Create(cut.Width, cut.Height, 0, 0, PixelFormats.Bgr32, null, data, stride); } // ImageSource --> Bitmap public static System.Drawing.Bitmap ImageSourceToBitmap(ImageSource imageSource) { BitmapSource m = (BitmapSource)imageSource; System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(m.PixelWidth, m.PixelHeight, System.Drawing.Imaging.PixelFormat.Format32bppPArgb); System.Drawing.Imaging.BitmapData data = bmp.LockBits( new System.Drawing.Rectangle(System.Drawing.Point.Empty, bmp.Size), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppPArgb); m.CopyPixels(Int32Rect.Empty, data.Scan0, data.Height * data.Stride, data.Stride); bmp.UnlockBits(data); return bmp; } // Bitmap --> BitmapImage public static BitmapImage BitmapToBitmapImage(Bitmap bitmap) { using (MemoryStream stream = new MemoryStream()) {  bitmap.Save(stream, ImageFormat.Bmp);  stream.Position = 0;  BitmapImage result = new BitmapImage();  result.BeginInit();  // According to MSDN, "The default OnDemand cache option retains access to the stream until the image is needed."  // Force the bitmap to load right now so we can dispose the stream.  result.CacheOption = BitmapCacheOption.OnLoad;  result.StreamSource = stream;  result.EndInit();  result.Freeze();  return result; } }}

運(yùn)行后的效果如下:

補(bǔ)充:關(guān)于剪裁的位置和區(qū)域的填寫說明,如下圖。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 鲁山县| 迁西县| 海宁市| 屏东县| 萨嘎县| 疏附县| 沽源县| 遂平县| 临安市| 城步| 临安市| 江门市| 马山县| 什邡市| 康马县| 巴青县| 泾源县| 承德县| 银川市| 克拉玛依市| 南开区| 南宫市| 潞西市| 青神县| 资溪县| 深水埗区| 双辽市| 时尚| 枞阳县| 邻水| 梓潼县| 垣曲县| 诸暨市| 内乡县| 濮阳县| 池州市| 精河县| 囊谦县| 腾冲县| 南昌市| 隆昌县|