欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#实现绘制浮雕图片效果实例

程序员文章站 2023-12-17 22:10:34
本文采用c#实例讲解了处理图片为浮雕效果的实现方法,这在ps中是一个常见的功能,也是c#中的一个简单的图像处理例子。程序先读取原图,然后依次访问每个像素的rgb值,获取相邻...

本文采用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());
 }
 }
}

感兴趣的朋友可以点此本站下载完整实例代码。

上一篇:

下一篇: