GDI+实例开源
来源:互联网 发布:小米6 手机网络不佳 编辑:程序博客网 时间:2024/06/14 23:16
- 原帖及讨论:http:
- 本来是学c#的,但是由于喜欢web开发,所以winform学的不是怎么样,对GDI+一直是知道理论也没有什么实践,最近找了点资料,做了点东西,和大家分享分享,有什么地方做的不好,还希望大家指点……
- 谢谢……
- 开发工具:visual studio 2005
- Form1.cs页面:
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
- namespace WindowsApplication6
- {
- public partial class Form1 : Form
- {
- private Bitmap smallBmp;
- private Bitmap bmp;
- private Bitmap newbmp;
- private bool imageStatus = false;
- private int resizeLevel;
- private Point lastPoint = Point.Empty;
- private Point origPoint = Point.Empty;
- private Rectangle rectSel;
- private bool selectStatus;
- public Form1()
- {
- InitializeComponent();
- panel1.MouseDown+=new MouseEventHandler(panel1_MouseDown);
- panel1.MouseUp+=new MouseEventHandler(panel1_MouseUp);
- panel1.MouseMove+=new MouseEventHandler(panel1_MouseMove);
- panel1.Paint+=new PaintEventHandler(panel1_Paint);
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- }
- private void openMenuItem_Click(object sender, EventArgs e)
- {
-
- OpenFileDialog fd = new OpenFileDialog();
- fd.InitialDirectory = @"D:/My Documents/My Pictures";
- fd.Filter = "Image File|*.jpg;*.gif";
- if (fd.ShowDialog() == DialogResult.OK)
- {
- string fname = fd.FileName;
- using (Graphics g = panel1.CreateGraphics())
- {
- bmp = new Bitmap(fname);
- newbmp = bmp;
- g.FillRectangle(Brushes.White, 0, 0, panel1.Width, panel1.Height);
- Rectangle r = new Rectangle(0, 0, bmp.Width, bmp.Height);
- g.DrawImage(bmp, r);
- imageStatus = true;
- Graphics gClear = panel2.CreateGraphics();
- gClear.FillRectangle(Brushes.White, 0, 0, panel2.Width, panel2.Height);
- gClear.Dispose();
- }
- }
- }
- private void mirrorMenuItem_Click(object sender, EventArgs e)
- {
- Graphics g = panel1.CreateGraphics();
- int h = newbmp.Height;
- int w = newbmp.Width;
- Point[] destPts ={
- new Point(w,0),
- new Point(0,0),
- new Point(w,h)
- };
- Bitmap tempBmp = new Bitmap(w, h);
- Graphics gr = Graphics.FromImage(tempBmp);
- gr.DrawImage(newbmp, destPts);
- g.DrawImage(tempBmp, 0, 0);
- newbmp = tempBmp;
- g.Dispose();
- gr.Dispose();
- }
- private void 翻转VToolStripMenuItem_Click(object sender, EventArgs e)
- {
- newbmp.RotateFlip(RotateFlipType.RotateNoneFlipY);
- Graphics g = panel1.CreateGraphics();
- g.DrawImage(newbmp, 0, 0);
- g.Dispose();
- }
- private void 刷屏RToolStripMenuItem_Click(object sender, EventArgs e)
- {
- panel1.Invalidate();
- panel1.Update();
- selectStatus = false;
- }
- private void panel1_Paint(object sender, PaintEventArgs e)
- {
- Graphics g = e.Graphics;
-
- if (imageStatus)
- {
- g.DrawImage(newbmp, e.ClipRectangle, e.ClipRectangle, GraphicsUnit.Pixel);
- }
- base.OnPaint(e);
- }
- private void panel1_MouseDown(object sender, MouseEventArgs e)
- {
- if (lastPoint != Point.Empty)
- {
- panel1.Invalidate(rectSel);
- panel1.Update();
- }
- lastPoint.X = e.X;
- lastPoint.Y = e.Y;
- origPoint = lastPoint;
- selectStatus = true;
- }
- private void panel1_MouseUp(object sender, MouseEventArgs e)
- {
- rectSel.X = e.X;
- if (e.X > origPoint.X)
- {
- rectSel.X = origPoint.X;
- }
- rectSel.Y = origPoint.Y;
- rectSel.Width = Math.Abs(e.X - origPoint.X) + 1;
- rectSel.Height = Math.Abs(e.Y - origPoint.Y) + 1;
- origPoint = Point.Empty;
- if (rectSel.Width < 2)
- {
- selectStatus = false;
- }
- }
- private void panel1_MouseMove(object sender, MouseEventArgs e)
- {
- if (origPoint != Point.Empty)
- {
- Rectangle r;
- Rectangle rd;
- int xop = origPoint.X;
- if (xop > lastPoint.X)
- {
- xop = lastPoint.X;
- }
- int w = Math.Abs(origPoint.X - lastPoint.X) + 1;
- int h = lastPoint.Y - origPoint.Y + 1;
- r = new Rectangle(xop, origPoint.Y, w, h);
- xop = e.X >= origPoint.X ? origPoint.X : e.X;
- w = Math.Abs(origPoint.X - e.X);
- h = e.Y - origPoint.Y;
- rd = new Rectangle(xop, origPoint.Y, w, h);
- Graphics g = panel1.CreateGraphics();
-
- g.DrawImage(newbmp,r);
-
- g.DrawRectangle(Pens.Red, rd);
- g.Dispose();
- lastPoint.X = e.X;
- lastPoint.Y = e.Y;
- }
- }
- private void 查看cToolStripMenuItem_Click(object sender, EventArgs e)
- {
- if (selectStatus)
- {
- Graphics g = panel2.CreateGraphics();
- g.FillRectangle(Brushes.White, panel2.ClientRectangle);
- Rectangle rd = new Rectangle(0, 0, rectSel.Width, rectSel.Height);
- Bitmap temp = new Bitmap(rectSel.Width, rectSel.Height);
- Graphics gi = Graphics.FromImage(temp);
- gi.DrawImage(newbmp, rd, rectSel, GraphicsUnit.Pixel);
- smallBmp = temp;
- g.DrawImage(smallBmp, rd);
- g.Dispose();
- resizeLevel = 0;
- }
- }
- private void button1_Click(object sender, EventArgs e)
- {
- Graphics g = panel2.CreateGraphics();
- if (smallBmp != null)
- {
- resizeLevel = resizeLevel + 1;
- float fac = (float)(1.0 + (resizeLevel * .25));
- int w = (int)(smallBmp.Width * fac);
- int h = (int)(smallBmp.Height * fac);
- Rectangle rd = new Rectangle(0, 0, w, h);
- Bitmap tempBmp = new Bitmap(w, h);
- Graphics gi = Graphics.FromImage(tempBmp);
- gi.DrawImage(smallBmp, rd);
- g.DrawImage(tempBmp,rd);
- gi.Dispose();
- }
- g.Dispose();
- }
- private void button2_Click(object sender, EventArgs e)
- {
- Graphics g = panel2.CreateGraphics();
- if (smallBmp != null)
- {
- resizeLevel = (resizeLevel > -3) ? resizeLevel - 1 : resizeLevel;
- float fac = (float)(1.0 + (resizeLevel * .25));
- int w = (int)(smallBmp.Width * fac);
- int h = (int)(smallBmp.Height * fac);
- Rectangle rd = new Rectangle(0, 0, w, h);
- Bitmap tempBmp = new Bitmap(w, h);
-
-
- Graphics gi = Graphics.FromImage(tempBmp);
- g.FillRectangle(Brushes.White, panel2.ClientRectangle);
- gi.DrawImage(smallBmp, rd);
- g.DrawImage(tempBmp, rd);
-
- gi.Dispose();
-
-
- }
-
- g.Dispose();
-
- }
- }
- }
- Form1.Designer.cs页面
- namespace WindowsApplication6
- {
- partial class Form1
- {
-
-
-
- private System.ComponentModel.IContainer components = null;
-
-
-
-
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
- #region Windows 窗体设计器生成的代码
-
-
-
-
- private void InitializeComponent()
- {
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
- this.menuStrip1 = new System.Windows.Forms.MenuStrip();
- this.文件FToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.openMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.图像IToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.mirrorMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.屏幕SToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.panel1 = new System.Windows.Forms.Panel();
- this.panel2 = new System.Windows.Forms.Panel();
- this.button1 = new System.Windows.Forms.Button();
- this.button2 = new System.Windows.Forms.Button();
- this.翻转VToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.刷屏RToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.查看cToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.menuStrip1.SuspendLayout();
- this.SuspendLayout();
-
-
-
- this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.文件FToolStripMenuItem,
- this.图像IToolStripMenuItem,
- this.屏幕SToolStripMenuItem});
- this.menuStrip1.Location = new System.Drawing.Point(0, 0);
- this.menuStrip1.Name = "menuStrip1";
- this.menuStrip1.Size = new System.Drawing.Size(655, 24);
- this.menuStrip1.TabIndex = 0;
- this.menuStrip1.Text = "menuStrip1";
-
-
-
- this.文件FToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.openMenuItem});
- this.文件FToolStripMenuItem.Name = "文件FToolStripMenuItem";
- this.文件FToolStripMenuItem.Size = new System.Drawing.Size(73, 20);
- this.文件FToolStripMenuItem.Text = "文件(&F)";
-
-
-
- this.openMenuItem.Name = "openMenuItem";
- this.openMenuItem.Size = new System.Drawing.Size(114, 22);
- this.openMenuItem.Text = "打开(&O)";
- this.openMenuItem.Click += new System.EventHandler(this.openMenuItem_Click);
-
-
-
- this.图像IToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.mirrorMenuItem,
- this.翻转VToolStripMenuItem,
- this.查看cToolStripMenuItem});
- this.图像IToolStripMenuItem.Name = "图像IToolStripMenuItem";
- this.图像IToolStripMenuItem.Size = new System.Drawing.Size(71, 20);
- this.图像IToolStripMenuItem.Text = "图像(&I)";
-
-
-
- this.mirrorMenuItem.Name = "mirrorMenuItem";
- this.mirrorMenuItem.Size = new System.Drawing.Size(152, 22);
- this.mirrorMenuItem.Text = "镜像(&M)";
- this.mirrorMenuItem.Click += new System.EventHandler(this.mirrorMenuItem_Click);
-
-
-
- this.屏幕SToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.刷屏RToolStripMenuItem});
- this.屏幕SToolStripMenuItem.Name = "屏幕SToolStripMenuItem";
- this.屏幕SToolStripMenuItem.Size = new System.Drawing.Size(73, 20);
- this.屏幕SToolStripMenuItem.Text = "屏幕(&S)";
-
-
-
- this.panel1.Location = new System.Drawing.Point(12, 27);
- this.panel1.Name = "panel1";
- this.panel1.Size = new System.Drawing.Size(327, 327);
- this.panel1.TabIndex = 1;
-
-
-
- this.panel2.Location = new System.Drawing.Point(364, 27);
- this.panel2.Name = "panel2";
- this.panel2.Size = new System.Drawing.Size(273, 262);
- this.panel2.TabIndex = 2;
-
-
-
- this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(224)))), ((int)(((byte)(192)))));
- this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.button1.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- this.button1.Location = new System.Drawing.Point(437, 315);
- this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(39, 23);
- this.button1.TabIndex = 3;
- this.button1.Text = "+";
- this.button1.UseVisualStyleBackColor = false;
- this.button1.Click += new System.EventHandler(this.button1_Click);
-
-
-
- this.button2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(224)))), ((int)(((byte)(192)))));
- this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.button2.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- this.button2.Location = new System.Drawing.Point(539, 315);
- this.button2.Name = "button2";
- this.button2.Size = new System.Drawing.Size(39, 23);
- this.button2.TabIndex = 4;
- this.button2.Text = "-";
- this.button2.UseVisualStyleBackColor = false;
- this.button2.Click += new System.EventHandler(this.button2_Click);
-
-
-
- this.翻转VToolStripMenuItem.Name = "翻转VToolStripMenuItem";
- this.翻转VToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
- this.翻转VToolStripMenuItem.Text = "翻转(&V)";
- this.翻转VToolStripMenuItem.Click += new System.EventHandler(this.翻转VToolStripMenuItem_Click);
-
-
-
- this.刷屏RToolStripMenuItem.Name = "刷屏RToolStripMenuItem";
- this.刷屏RToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
- this.刷屏RToolStripMenuItem.Text = "刷屏(&R)";
- this.刷屏RToolStripMenuItem.Click += new System.EventHandler(this.刷屏RToolStripMenuItem_Click);
-
-
-
- this.查看cToolStripMenuItem.Name = "查看cToolStripMenuItem";
- this.查看cToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
- this.查看cToolStripMenuItem.Text = "查看(&c)";
- this.查看cToolStripMenuItem.Click += new System.EventHandler(this.查看cToolStripMenuItem_Click);
-
-
-
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(655, 375);
- this.Controls.Add(this.button2);
- this.Controls.Add(this.button1);
- this.Controls.Add(this.panel2);
- this.Controls.Add(this.panel1);
- this.Controls.Add(this.menuStrip1);
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.MainMenuStrip = this.menuStrip1;
- this.Name = "Form1";
- this.Text = "Form1";
- this.Load += new System.EventHandler(this.Form1_Load);
- this.menuStrip1.ResumeLayout(false);
- this.menuStrip1.PerformLayout();
- this.ResumeLayout(false);
- this.PerformLayout();
- }
- #endregion
- private System.Windows.Forms.MenuStrip menuStrip1;
- private System.Windows.Forms.ToolStripMenuItem 文件FToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem 图像IToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem 屏幕SToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem openMenuItem;
- private System.Windows.Forms.Panel panel1;
- private System.Windows.Forms.Panel panel2;
- private System.Windows.Forms.Button button1;
- private System.Windows.Forms.Button button2;
- private System.Windows.Forms.ToolStripMenuItem mirrorMenuItem;
- private System.Windows.Forms.ToolStripMenuItem 翻转VToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem 刷屏RToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem 查看cToolStripMenuItem;
- }
- }
- Progrem.cs页面
- using System;
- using System.Collections.Generic;
- using System.Windows.Forms;
- namespace WindowsApplication6
- {
- static class Program
- {
-
-
-
- [STAThread]
- static void Main()
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new Form1());
- }
- }
- }