首先新建一个Bitmap对象,bitmap分辨率为800 * 600.
代码如下:
然后利用SetPixel方法,将图片中的所有像素设置为rgb颜色为(200,1,120)
代码如下:
int W = 800;
int H = 600;
bitmap = new Bitmap(W, H);//设置bitmap分辨率
Color color =Color.FromArgb(200,1,120);
for(int i=0;i<H;i++)
{
/* int R =random();
int G = random();
int B = random();
Color color = Color.FromArgb(R, G, B);*/
for (int j=0;j<W;j++)
{
bitmap.SetPixel(j, i, color);//设置颜色
}
}
picBox.BackgroundImage = bitmap;//显示图片
此时截图如下:
第三步: 利用Save方法,以及SavefileDialog控件,将上述图片保存到桌面。
代码如下
此时显示如下:
第四步:利用Random类,设置背景中的每行像素颜色为某一个随机颜色值。
代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace RayTracingWord
{
public partial class Form1 : Form
{
Bitmap bitmap;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private int random()//重新设立一个randrom方法,不用Randrom类
{
var seed = Guid.NewGuid().GetHashCode();
Random r = new Random(seed);
int i = r.Next(0, 255);
return i ;
}
private void emerge_Click(object sender, EventArgs e)
{
int W = 800;
int H = 600;
bitmap = new Bitmap(W, H);//设置bitmap分辨率
// Color color1 =Color.FromArgb(200,1,120);
for(int i=0;i<H;i++)
{
int R =random();
int G = random();
int B = random();
Color color = Color.FromArgb(R, G, B);
for (int j=0;j<W;j++)
{
bitmap.SetPixel(j, i, color);//设置颜色
}
}
picBox.BackgroundImage = bitmap;//显示图片
}
private void Save_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();//保存图片实例化
sfd.Filter = "jpg图片|*.jpg|Bmp图片|*.bmp|Png图片|*.png|Gif图片|*.gif";//设置保存图片格式
sfd.RestoreDirectory = true;//再次打开是否固定到上次打开位置
sfd.FileName = System.DateTime.Now.ToString("yyyyMMddHHmm") + "-";//设置图片默认名
if(sfd.ShowDialog()==DialogResult.OK)
{
bitmap.Save(sfd.FileName);
MessageBox.Show(this, "图片保存成功!", "信息提示");//保存成功提示窗口
}
}
}
}
此时截图如下:
**最后:**通过ColorDialog控件,分别设置两个颜色,实现图片从顶部到底部的颜色渐变。既图片顶部为颜色1, 图片底部为颜色2。 图片中间实现颜色1到颜色2 的线性渐变。
代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace RayTracingWord
{
public partial class Form1 : Form
{
int W = 800;
int H = 600;
Bitmap bitmap = new Bitmap(800, 600);// 设置bitmap分辨率;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private int random()//重新设立一个randrom方法,不用Randrom类
{
var seed = Guid.NewGuid().GetHashCode();
Random r = new Random(seed);
int i = r.Next(0, 255);
return i ;
}
private void emerge_Click(object sender, EventArgs e)
{
// Color color =Color.FromArgb(200,1,120);
for (int i=0;i<H;i++)
{
int R =random();
int G = random();
int B = random();
Color color = Color.FromArgb(R, G, B);
for (int j=0;j<W;j++)
{
bitmap.SetPixel(j, i, color);//设置颜色
}
}
picBox.BackgroundImage = bitmap;//显示图片
}
private void Save_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();//保存图片实例化
sfd.Filter = "jpg图片|*.jpg|Bmp图片|*.bmp|Png图片|*.png|Gif图片|*.gif";//设置保存图片格式
sfd.RestoreDirectory = true;//再次打开是否固定到上次打开位置
sfd.FileName = System.DateTime.Now.ToString("yyyyMMddHHmm") + "-";//设置图片默认名
if(sfd.ShowDialog()==DialogResult.OK)
{
bitmap.Save(sfd.FileName);
MessageBox.Show(this, "图片保存成功!", "信息提示");//保存成功提示窗口
}
}
Color color1;
Color color2;
private void btnJianBian_Click(object sender, EventArgs e)
{
if(colorDialog1.ShowDialog()==DialogResult.OK)
{
color1 = color2;
color2 = colorDialog1.Color;
for (int i = 0; i < H; i++)
{
Color color = Color.FromArgb((int)(color1.R+i*(color2.R-color1.R)/(H*1.0)), (int)(color1.G + i * (color2.G - color1.G) / (H * 1.0)), (int)(color1.B + i * (color2.B - color1.B) / (H * 1.0)));
for (int j = 0; j < W; j++)
{
bitmap.SetPixel(j, i, color);//设置颜色
}
}
picBox.BackgroundImage = bitmap;//显示图片
picBox.Invalidate();
}
}
}
}
此时截图如下:
写博客的初心也是为了记录自己的学习过程,有什么问题也希望大家可以在评论区留言,一起讨论。(。・`ω´・)