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

C#實現(xiàn)繪制浮雕圖片效果實例

 更新時間:2014年08月11日 15:10:28   投稿:shichen2014  
這篇文章主要介紹了C#實現(xiàn)繪制浮雕圖片效果實例,是C#程序設(shè)計中非常實用的一個功能,需要的朋友可以參考下

本文采用C#實例講解了處理圖片為浮雕效果的實現(xiàn)方法,這在PS中是一個常見的功能,也是C#中的一個簡單的圖像處理例子。程序先讀取原圖,然后依次訪問每個像素的RGB值,獲取相鄰兩個像素的R、G、B值,計算與左上角像素的RGB分量之差,將計算后的RGB值回寫到位圖,最后進(jìn)行圖片的浮雕處理。

主要代碼如下:

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 窗體設(shè)計器生成的代碼
 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:進(jìn)行雕刻處理
  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;
  //進(jìn)行圖片的浮雕處理
  //依次訪問每個像素的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());
 }
 }
}

感興趣的朋友可以點此本站下載完整實例代碼。

相關(guān)文章

最新評論