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 ProductionControl { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { try { //int ret = API.GWQ_CallShowPDF(0, 'K', 9600, this.textBox1.Text.Trim(), this.textBox2.Text.Trim(), "", ""); //if (ret != 0) // MessageBox.Show("失败,ret="+ret, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private double ratio = 1; // 图片的起始显示比例 private double ratioStep = 0.1; private Size pic_size; private int xPos; private int yPos; private void Form1_Load(object sender, EventArgs e) { var bmp = Bitmap.FromFile("f:\\1.jpg"); Size size = bmp.Size; this.panel1.ClientSize = new Size(this.panel1.ClientSize.Width, (int)(this.panel1.ClientSize.Width * (size.Height * 1.0f / size.Width))); this.pictureBox1.Size = this.panel1.ClientSize; this.pictureBox1.Location = new Point(0, 0); this.pictureBox1.Image = bmp; pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; pictureBox1.MouseWheel += new MouseEventHandler(pictureBox1_MouseWheel); pictureBox1.MouseMove += pictureBox1_MouseMove; pictureBox1.MouseDown += pictureBox1_MouseDown; this.ActiveControl = this.pictureBox1; // 设置焦点 pic_size = this.panel1.ClientSize; // //MessageBox.Show("菜单栏厚度" + SystemInformation.MenuHeight.ToString()); //获取标准菜单栏的厚度 //MessageBox.Show("标题栏厚度" + SystemInformation.CaptionHeight.ToString()); //获取标准标题栏的厚度 this.Height = panel1.Bottom+ SystemInformation.CaptionHeight + SystemInformation.MenuHeight+ statusStrip1.Height; } private void panel1_SizeChanged(object sender, EventArgs e) { pic_size = this.panel1.ClientSize; } private void pictureBox1_MouseWheel(object sender, MouseEventArgs e) { Point pictureBoxPoint = this.PointToClient(Cursor.Position); //this.Text = $"{e.X}:{e.Y}; {pictureBoxPoint.X}:{pictureBoxPoint.Y}; {pictureBox1.Left}:{pictureBox1.Top}; " + // $"{this.pictureBox1.Width}:{this.pictureBox1.Height}; {this.Width}:{this.Height}; " + // $"Cursor:{Cursor.Position.X}:{Cursor.Position.Y}"; if (e.Delta > 0) { ratio += ratioStep; if (ratio > 100) // 放大上限 ratio = 100; else { int x = (int)(pictureBox1.Left-e.X * (e.X * 1.0d / pictureBox1.Width * ratioStep) + 0.5); int y = (int)(pictureBox1.Top- e.Y * (e.Y * 1.0d / pictureBox1.Height * ratioStep) + 0.5); //this.Text = $"{pictureBox1.Width}-{pic_size.Width};{ratio},{pictureBox1.Left}-{e.X}* 比例:{e.X*1.0d/pictureBox1.Width}={e.X}/{pictureBox1.Width} * {(ratioStep)}={x} | " + // $"{pictureBox1.Top}-{e.Y}* {e.Y * 1.0f / pictureBox1.Height * (ratio - 1.0d)}={y}"; this.changePictureBoxSize(new Point(x, y), ratio); } } else if (ratio - ratioStep >= 1) { ratio -= ratioStep; //if (ratio < 0.1) // 放大下限 // ratio = 0.1; //else int x = (int)(pictureBox1.Left + e.X * (e.X * 1.0d / pictureBox1.Width * ratioStep) + 0.5); int y = (int)(pictureBox1.Top + e.Y * (e.Y * 1.0d / pictureBox1.Height * ratioStep) +0.5); this.changePictureBoxSize(new Point(x, y), ratio); } } private void changePictureBoxSize(Point location, double ratio) { var picSize = pictureBox1.Size; picSize.Width = Convert.ToInt32(pic_size.Width * ratio); picSize.Height = Convert.ToInt32(pic_size.Height * ratio); pictureBox1.Size = picSize; if (location.X > 0) location.X = 0; if (location.Y > 0) location.Y = 0; if (picSize.Width+location.X this.panel1.ClientSize.Width || pictureBox1.Height > this.panel1.ClientSize.Height) { int moveX = e.X - xPos; int moveY = e.Y - yPos; if ((pictureBox1.Left + moveX) <= 0 && (pictureBox1.Top + moveY) <= 0 && (pictureBox1.Right + moveX) >= this.panel1.ClientSize.Width && (pictureBox1.Bottom + moveY) >= this.panel1.ClientSize.Height) { pictureBox1.Left += moveX;//设置x坐标. pictureBox1.Top += moveY;//设置y坐标. } } } } catch (Exception dd) { MessageBox.Show(dd.Message); } } private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { xPos = e.X;//当前x坐标. yPos = e.Y;//当前y坐标. } //-------------- void pictureBox1_MouseWheel1(object sender, MouseEventArgs e)//鼠标滚轮事件 { double step = 1.2;//缩放倍率 if (e.Delta > 0) { if (pictureBox1.Height >= Screen.PrimaryScreen.Bounds.Height * 10) return; pictureBox1.Height = (int)(pictureBox1.Height * step); pictureBox1.Width = (int)(pictureBox1.Width * step); int px = Cursor.Position.X - pictureBox1.Location.X; int py = Cursor.Position.Y - pictureBox1.Location.Y; int px_add = (int)(px * (step - 1.0)); int py_add = (int)(py * (step - 1.0)); pictureBox1.Location = new Point(pictureBox1.Location.X - px_add, pictureBox1.Location.Y - py_add); Application.DoEvents(); } else { if (pictureBox1.Height <= Screen.PrimaryScreen.Bounds.Height) return; pictureBox1.Height = (int)(pictureBox1.Height / step); pictureBox1.Width = (int)(pictureBox1.Width / step); int px = Cursor.Position.X - pictureBox1.Location.X; int py = Cursor.Position.Y - pictureBox1.Location.Y; int px_add = (int)(px * (1.0 - 1.0 / step)); int py_add = (int)(py * (1.0 - 1.0 / step)); pictureBox1.Location = new Point(pictureBox1.Location.X + px_add, pictureBox1.Location.Y + py_add); Application.DoEvents(); } } private void tsbtnClose_Click(object sender, EventArgs e) { this.checkBox1.Checked = !this.checkBox1.Checked; //this.panel1.Width *= 2; //this.panel1.Height *= 2; } private void checkBox1_CheckedChanged(object sender, EventArgs e) { this.Text=this.checkBox1.Checked.ToString(); } private void tsbtnMakeTag_Click(object sender, EventArgs e) { } } }