using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
// myself
using System.Collections.Specialized;
using System.Text;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
namespace haopai
{
/// <summary>
/// Form1 的摘要说明。
/// </summary> public class Form1 : System.Windows.Forms.Form
{
/// <summary>
/// 必需的设计器变量。
/// </summary> private System.ComponentModel.Container components =
null;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary> protected override void Dispose(
bool disposing )
{
if( disposing )
{
if (components !=
null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
Windows 窗体设计器生成的代码 /// <summary>
/// 应用程序的主入口点。
/// </summary> [STAThread]
static void Main()
{
Application.Run(
new Form1());
}
private void Form1_Load(
object sender, System.EventArgs e)
{
// GrayByPixels(); // 灰度处理
}
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Label r;
private System.Windows.Forms.TextBox valueBox;
private System.Windows.Forms.Button getbutton;
private System.Windows.Forms.TrackBar trackBar1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtStartX;
private System.Windows.Forms.TextBox txtStartY;
private System.Windows.Forms.TextBox txtEndX;
private System.Windows.Forms.TextBox txtEndY;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Button btn_SavePoint;
// 灰度值
protected int nHuidu =
0;
public Bitmap bmpobj;
private Cursor inCursor;
// 鼠标样式
private Cursor MyCursor;
// 鼠标样式
private Point m_ptStart =
new Point(
0,
0);
private Point m_ptEnd =
new Point(
0,
0);
private bool m_bMouseDown =
false;
// 读取图片
private void getbutton_Click(
object sender, System.EventArgs e)
{
try {
bmpobj=
null;
// 初始化为空
string path = Application.ExecutablePath.Substring(
0,Application.ExecutablePath.LastIndexOf(
" \\ "))+
" \\aa.jpg ";
Image get_Image = Image.FromFile(path);
pictureBox1.Image =get_Image;
GrayByPixels();
// 灰度处理
// 初始化trackBar1
trackBar1.Value = nHuidu;
}
catch(ArgumentException)
{
MessageBox.Show(
" There was an error.Check the path to the image file. ");
}
}
// 滚动条
private void trackBar1_Scroll(
object sender, System.EventArgs e)
{
int r,g,b;
// Bitmap memBmp = new Bitmap(pictureBox1.Image); // (pictureBox1.Width,pictureBox1.Height,System.Drawing.Imaging.PixelFormat.Format24bppRgb);
UnCodebase () ;
Bitmap memBmp = bmpobj;
// Image userDrawAreaImage = Bitmap memBmp
int nChang = trackBar1.Value - nHuidu;
for(
int x=
0; x<pictureBox1.Image.Width; x++)
{
for(
int y=
0; y<pictureBox1.Image.Height; y++)
{
Color pixelColor = memBmp.GetPixel(x, y);
// byte i = 0x01;
if(( (pixelColor.R + nChang) >=
0) && ((pixelColor.R + nChang) <=
250)) r = pixelColor.R + nChang;
else r = pixelColor.R;
if(( (pixelColor.G + nChang) >=
0) && ((pixelColor.G + nChang) <=
250)) g = pixelColor.G + nChang;
else g = pixelColor.G;
if(( (pixelColor.B + nChang) >=
0) && ((pixelColor.B + nChang) <=
250)) b = pixelColor.B + nChang;
else b = pixelColor.B;
// Color newColor = Color.FromArgb(r,g ,b);
// memBmp.SetPixel(x, y, newColor);
memBmp.SetPixel(x, y, Color.FromArgb(r, g, b));
}
}
// bmpobj = memBmp; // 把图片传给全局变量
// GrayByPixels();
// Graphics memGp = Graphics.FromImage(memBmp);
pictureBox1.Image = memBmp;
GrayByPixels();
// 灰度处理
valueBox.Text = nHuidu.ToString();
}
// pictureBox1 按下鼠标
private void pictureBox1_MouseDown(
object sender, System.Windows.Forms.MouseEventArgs e)
{
m_ptStart =
new Point(e.X, e.Y);
txtStartX.Text = m_ptStart.X.ToString();
txtStartY.Text = m_ptStart.Y.ToString();
// if (!m_bMouseDown)
// {
// m_ptEnd = new Point(e.X, e.Y);
// txtEndX.Text = m_ptEnd.X.ToString();
// txtEndY.Text = m_ptEnd.Y.ToString();
// }
m_bMouseDown = !m_bMouseDown;
}
// pictureBox1 移动鼠标
private void pictureBox1_MouseMove(
object sender, System.Windows.Forms.MouseEventArgs e)
{
try {
if (!m_bMouseDown ==
true)
return;
// 判断是否按下 pictureBox1_MouseDown
m_ptEnd =
new Point(e.X, e.Y);
this.pictureBox1.Refresh();
if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
{
// m_ptEnd = new Point(e.X, e.Y);
MyCursor =
new Cursor(
" cross_m.cur ");
Cursor.Current = MyCursor;
// Rectangle rec = new Rectangle(Convert.ToInt32(txtStartX),Convert.ToInt32(txtStartY),Convert.ToInt32(txtEndX),Convert.ToInt32(txtEndY));
// pictureBox1.Image.Size
// Bitmap memBmp = bmpobj;
// pictureBox1.Image = System.Drawing.Image.FromFile(selection.SubItems[1].Text);
}
// 显示"+"指针
else {
inCursor =
new Cursor(
" pen_rm.cur ");
Cursor.Current = inCursor;
}
}
catch {
if (inCursor !=
null)
inCursor.Dispose();
if (MyCursor !=
null)
MyCursor.Dispose();
}
}
// 鼠标离开 pictureBox1
private void pictureBox1_MouseLeave(
object sender, System.EventArgs e)
{
if (inCursor !=
null)
inCursor.Dispose();
if (MyCursor !=
null)
MyCursor.Dispose();
}
// pictureBox1 释放鼠标
private void pictureBox1_MouseUp(
object sender, System.Windows.Forms.MouseEventArgs e)
{
if (!m_bMouseDown ==
true)
return;
m_ptEnd =
new Point(e.X, e.Y);
txtEndX.Text = m_ptEnd.X.ToString();
txtEndY.Text = m_ptEnd.Y.ToString();
m_bMouseDown = !m_bMouseDown;
//
// Bitmap memBmp = new Bitmap(pictureBox1.Image);
// Graphics myGraphics = Graphics.FromImage(pictureBox1.Image);
// Pen blackPen = new Pen(Color.Black, 3);
// Rectangle rec = new Rectangle(Convert.ToInt32(txtStartX),Convert.ToInt32(txtStartY),Convert.ToInt32(txtEndX),Convert.ToInt32(txtEndY));
// myGraphics.DrawRectangle(blackPen, rec);
// pictureBox1.Image = Image.FromStream(myGraphics);
// myGraphics.Dispose();
}
// pictureBox1 点击图片
private void pictureBox1_Click(
object sender, System.EventArgs e)
{
}
// pictureBox1 绘制图片
private void pictureBox1_Paint(
object sender, System.Windows.Forms.PaintEventArgs e)
{
if (m_ptStart.Equals(m_ptEnd))
return;
// if(pictureBox1.Image == null || CurX == 0) return;
// Pen blackPen = new Pen(Color.Black, 3);
e.Graphics.DrawRectangle(System.Drawing.Pens.Yellow,m_ptStart.X,m_ptStart.Y,m_ptEnd.X - m_ptStart.X, m_ptEnd.Y - m_ptStart.Y);
// this.pictureBox1.Refresh();
}
// 保存截取图片点
private void btn_SavePoint_Click(
object sender, System.EventArgs e)
{
}
/ xg // public void UnCodebase ()
// (Bitmap pic)
{
if(bmpobj ==
null)
{
// Bitmap memBmp = new Bitmap(pictureBox1.Image); // (pictureBox1.Width,pictureBox1.Height,System.Drawing.Imaging.PixelFormat.Format24bppRgb);
bmpobj =
new Bitmap (pictureBox1.Image);
// (pic); // 转换为Format32bppRgb
}
}
/// <summary>
/// 根据RGB,计算灰度值
/// </summary>
/// <param name="posClr"> Color值 </param>
/// <returns> 灰度值,整型 </returns> private int GetGrayNumColor(System.Drawing.Color posClr)
{
return (posClr.R *
19595 + posClr.G *
38469 + posClr.B *
7472)>>
16;
}
/// <summary>
/// 灰度转换,逐点方式
/// </summary> public void GrayByPixels()
// 灰度处理
{
// xg // int tmpValue =
0;
UnCodebase ();
Bitmap memBmp = bmpobj;
for (
int i =
0; i < bmpobj.Height; i++)
{
for (
int j =
0; j < bmpobj.Width; j++)
{
// int tmpValue = GetGrayNumColor(bmpobj.GetPixel(j, i));
tmpValue += GetGrayNumColor(bmpobj.GetPixel(j, i));
// bmpobj.SetPixel(j, i, Color.FromArgb(tmpValue, tmpValue, tmpValue));
}
}
tmpValue = tmpValue/(bmpobj.Height * bmpobj.Width);
valueBox.Text = tmpValue.ToString();
nHuidu = tmpValue;
// 全局灰度
}
/// <summary>
/// 去图形边框
/// </summary>
/// <param name="borderWidth"></param> public void ClearPicBorder(
int borderWidth)
{
for (
int i =
0; i < bmpobj.Height; i++)
{
for (
int j =
0; j < bmpobj.Width; j++)
{
if (i < borderWidth || j < borderWidth || j > bmpobj.Width -
1 - borderWidth || i > bmpobj.Height -
1 - borderWidth)
bmpobj.SetPixel(j, i, Color.FromArgb(
255,
255,
255));
}
}
}
}
}