版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、图像的局部放大基于winform下的pictBox控件和button控件实现的:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;using System.Threading;namespace 图像的局部放大 public partial class Form1
2、: Form public Form1() InitializeComponent(); Cursor mycur = new Cursor(C:windowscursorscross_l.cur); Bitmap image; private void button1_Click(object sender, EventArgs e) OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = Jpeg File(*.jpg)|*.jpg; if (ofd.ShowDialog()=DialogResult.OK) image = new
3、Bitmap(ofd.FileName); pictureBox1.Image = image; pictureBox1.Width = image.Width; pictureBox1.Height = image.Height; Private void pictureBox1_MouseMove(object sender, MouseEventArgs e) if (image != null) Cursor.Current = mycur; Graphics g = pictureBox1.CreateGraphics(); this.pictureBox1.Refresh();/清
4、楚原来的内容重绘pictureBox的图像 Rectangle soureRec = new Rectangle(e.X-100 , e.Y-100 , 200, 200); /100代表图片放大的区域的尺寸和位置,其中e.x-100,e.y-100代表光标处于需要放大图像区域的中间位置 Rectangle destRec = new Rectangle(e.X-200 , e.Y-200 , 400, 400);/200代表图片放大后的区域的尺寸和位置,其中e.x-200,e.y-200代表光标处于需要放大图像区域的中间位置 g.DrawImage(image, destRec, soure
5、Rec, GraphicsUnit.Pixel); /在指定位置按照指定大小绘制Image图像,则该图像放大了(200/100)倍 else MessageBox.Show(选择需要显示的图片); 另一种参考程序:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace 图像的局部放大
6、01 public partial class Form1 : Form public static int i = 0; private Point m_ptStart = new Point(0, 0); private Point m_ptEnd = new Point(0, 0); private bool m_bMouseDown = false; private float xRate, yRate, realX1, realY1, realX2, realY2; int pLeft = 0; int pTop = 0; public Form1() InitializeCompo
7、nent(); private void Form1_Load(object sender, EventArgs e) xRate = (float)pictureBox1.Image.Width / pictureBox1.Width; yRate = (float)pictureBox1.Image.Height / pictureBox1.Height; SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); / 禁止擦除背景. SetStyle(Contro
8、lStyles.DoubleBuffer, true); /双缓冲 private void pictureBox1_MouseDown(object sender, MouseEventArgs e) if (pictureBox1.HasChildren) for (int i = 0; i pictureBox1.Controls.Count; i+) pictureBox1.Controls.RemoveAt(0); if (e.Button != MouseButtons.Left) return; m_ptEnd = new Point(e.X, e.Y); this.pictur
9、eBox1.Refresh(); realX1 = e.X * xRate; realY1 = e.Y * yRate; if (!m_bMouseDown) m_ptStart = new Point(e.X, e.Y); m_ptEnd = new Point(e.X, e.Y); m_bMouseDown = !m_bMouseDown; private void pictureBox1_Paint(object sender, PaintEventArgs e) if (m_ptEnd.X - m_ptStart.X 0 | m_ptEnd.Y - m_ptStart.Y = 100)
10、 m_ptEnd.X = m_ptStart.X + 100; if (m_ptEnd.Y - m_ptStart.Y = 100) m_ptEnd.Y = m_ptStart.Y + 100; e.Graphics.DrawRectangle(System.Drawing.Pens.Blue, m_ptStart.X, m_ptStart.Y, m_ptEnd.X - m_ptStart.X, m_ptEnd.Y - m_ptStart.Y); private void pictureBox1_MouseUp(object sender, MouseEventArgs e) int eX =
11、 0, eY = 0; if (e.Button != MouseButtons.Left) return; if (e.X - m_ptStart.X = 100) if (e.X = pictureBox1.Width - 1) if (pictureBox1.Width - m_ptStart.X - 1 100) eX = m_ptStart.X + 100; else eX = pictureBox1.Width - 1; else eX = m_ptStart.X + 100; else if (e.X = pictureBox1.Width - 1) eX = pictureBo
12、x1.Width - 1; else eX = e.X; if (e.Y - m_ptStart.Y = 100) if (e.Y = pictureBox1.Height - 1) if (pictureBox1.Height - m_ptStart.Y - 1 100) eX = m_ptStart.Y + 100; else eY = pictureBox1.Height - 1; else eY = m_ptStart.Y + 100; else if (e.Y = pictureBox1.Height - 1) eY = pictureBox1.Height - 1; else eY
13、 = e.Y; if (m_ptStart.X = 0 & m_ptEnd.X = 0 & m_ptStart.Y = 0 & m_ptEnd.Y = 0 & m_ptStart.X = 254 & m_ptEnd.X = 254 & m_ptStart.Y = 163 & m_ptEnd.Y pLeft = e1.X; pTop = e1.Y; ; p.MouseMove += (s2, e2) = GC.Collect(); if (e2.Button.ToString().Equals(Left) if (p.Location.X + e2.X - pLeft = pictureBox1
14、.Width - p.Width) p.Left = pictureBox1.Width - p.Width - 1; else p.Left = p.Location.X + e2.X - pLeft; if (p.Location.Y + e2.Y - pTop = pictureBox1.Height - p.Height) p.Top = pictureBox1.Height - p.Height - 1; else p.Top = p.Location.Y + e2.Y - pTop; Crop(Bitmap)pictureBox1.Image, Convert.ToInt32(p.
15、Location.X * xRate), Convert.ToInt32(p.Location.Y * yRate), Convert.ToInt32(p.Width), Convert.ToInt32(p.Height); ; pictureBox1.Controls.Add(p); private void pictureBox1_MouseMove(object sender, MouseEventArgs e) if (e.Button != MouseButtons.Left) return; m_ptEnd = new Point(e.X, e.Y); this.pictureBox1.Refresh(); private void Crop(Bitmap bitmap, int X, int Y, int width, int height) if (width 0 & height 0) Re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年春季学期小学数学教学成效总结
- AI编程语言排行榜
- 电商专业就业前景分析
- 工厂安全宣教
- 标本员安全实操测试考核试卷含答案
- 西式糕点师岗前趋势考核试卷含答案
- 火柴制造工岗前保密意识考核试卷含答案
- 工业炉及电炉电气控制装调工岗位突发事件应对考核试卷含答案
- 妇幼保健员岗前离岗考核试卷含答案
- 灌区管理工规章制度水平考核试卷含答案
- 2026年湖南有色黄沙坪矿业有限公司招聘80人笔试参考题库及答案详解
- GA/T 1999.3-2025道路交通事故车辆速度鉴定方法第3部分:基于视频图像
- 《养生保健》课件-5.上肢部保健按摩
- 2026四川凉山州越西县县属国有企业管理人员市场化选聘(第二轮)5人模拟试卷及答案详解(真题汇编)
- 建设电工劳务分包合同
- (2026年)女性避孕方法临床应用的中国专家共识(2026年扩展版)
- 2026年党员应知应会基础知识试题(附答案)
- 2026年联通考试试题及答案
- 预制箱梁运输及安装施工方案
- 医院药师职业技能大赛模拟试题-临床药物治疗学
- 小学数学思想方法(课件)
评论
0/150
提交评论