程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#完成繪制浮雕圖片後果實例

C#完成繪制浮雕圖片後果實例

編輯:C#入門知識

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());
 }
 }
}

感興致的同伙可以點此本站下載完全實例代碼。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved