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()); } } }
感兴趣的朋友可以点此本站下载完整实例代码。