C#完成繪制浮雕圖片後果實例。本站提示廣大學習愛好者:(C#完成繪制浮雕圖片後果實例)文章只能為提供參考,不一定能成為您想要的結果。以下是C#完成繪制浮雕圖片後果實例正文
本文彩用C#實例講授了處置圖片為浮雕後果的完成辦法,這在PS中是一個罕見的功效,也是C#中的一個簡略的圖象處置例子。法式先讀取原圖,然後順次拜訪每一個像素的RGB值,獲得相鄰兩個像素的R、G、B值,盤算與左上角像素的RGB重量之差,將盤算後的RGB值回寫到位圖,最初停止圖片的浮雕處置。
重要代碼以下:
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Drawing.Imaging; namespace EmbossColander { public class Form1 : System.Windows.Forms.Form { private System.ComponentModel.Container components = null; public Form1() { InitializeComponent(); } protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows 窗體設計器生成的代碼 private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.Size = new System.Drawing.Size(350,200); this.Text = "Form1"; } #endregion protected override void OnPaint(PaintEventArgs e) { base.OnPaint (e); Graphics graphics = e.Graphics; graphics.Clear(Color.White); graphics.ScaleTransform(0.7f,0.7f); Bitmap image = new Bitmap("dog.bmp"); int Width = image.Width; int Height = image.Height; //image2:停止镌刻處置 Bitmap image2 = image.Clone(new Rectangle(0,0,Width,Height),PixelFormat.DontCare ); //繪制原圖 graphics.DrawImage( image, new Rectangle(0, 0, Width, Height)); Color color, colorTemp,colorLeft; //停止圖片的浮雕處置 //順次拜訪每一個像素的RGB值 for(int i=Width-1; i>0;i--) { for( int j=Height-1; j>0;j--) { //獲得相鄰兩個像素的R、G、B值 color =image.GetPixel(i, j); colorLeft=image.GetPixel(i-1, j-1); //盤算與左上角像素的RGB重量之差 //67:掌握圖片的最低灰度,128:常量,更改這兩個值會獲得分歧的後果 int r = Math.Max(67,Math.Min(255, Math.Abs(color.R-colorLeft.R+128))); int g = Math.Max(67,Math.Min(255, Math.Abs(color.G-colorLeft.G+128))); int b = Math.Max(67,Math.Min(255, Math.Abs(color.B-colorLeft.B+128))); Color colorResult=Color.FromArgb(255,r,g,b); //將盤算後的RGB值回寫到位圖 image.SetPixel(i, j,colorResult); } //繪制浮雕圖 graphics.DrawImage( image, new Rectangle(Width+10, 0, Width, Height)); } } [STAThread] static void Main() { Application.Run(new Form1()); } } }
感興致的同伙可以點此本站下載完全實例代碼。