zoukankan      html  css  js  c++  java
  • Winform放大镜

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;

    namespace Magnifier
    {
    public class Form1 : System.Windows.Forms.Form
    {
    private System.Windows.Forms.Button button1;
    private System.Windows.Forms.OpenFileDialog openFileDialog1;
    private System.ComponentModel.Container components = null;
    private Image img = null;
    private System.Windows.Forms.Panel panel1;
    private System.Windows.Forms.Panel panel2;
    private System.Windows.Forms.PictureBox pictureBox2;
    private System.Windows.Forms.PictureBox pictureBox1;
    private System.Windows.Forms.Label label1;
    private int scale = 1;

    public Form1()
    {
    InitializeComponent();
    }

    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if (components != null)
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    }

    #region Windows 窗体设计器生成的代码
    private void InitializeComponent()
    {
    this.button1 = new System.Windows.Forms.Button();
    this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
    this.panel1 = new System.Windows.Forms.Panel();
    this.panel2 = new System.Windows.Forms.Panel();
    this.pictureBox2 = new System.Windows.Forms.PictureBox();
    this.pictureBox1 = new System.Windows.Forms.PictureBox();
    this.label1 = new System.Windows.Forms.Label();
    this.panel1.SuspendLayout();
    this.panel2.SuspendLayout();
    this.SuspendLayout();
    //
    // button1
    //
    this.button1.Location = new System.Drawing.Point(416, 520);
    this.button1.Name = "button1";
    this.button1.Size = new System.Drawing.Size(96, 23);
    this.button1.TabIndex = 1;
    this.button1.Text = "浏览 >>";
    this.button1.Click += new System.EventHandler(this.button1_Click);
    //
    // panel1
    //
    this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
    this.panel1.Controls.Add(this.panel2);
    this.panel1.Controls.Add(this.pictureBox1);
    this.panel1.Location = new System.Drawing.Point(8, 8);
    this.panel1.Name = "panel1";
    this.panel1.Size = new System.Drawing.Size(504, 504);
    this.panel1.TabIndex = 0;
    //
    // panel2
    //
    this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
    this.panel2.Controls.Add(this.pictureBox2);
    this.panel2.Enabled = false;
    this.panel2.Location = new System.Drawing.Point(50, 50);
    this.panel2.Name = "panel2";
    this.panel2.Size = new System.Drawing.Size(80, 80);
    this.panel2.TabIndex = 1;
    //
    // pictureBox2
    //
    this.pictureBox2.Location = new System.Drawing.Point(0, 0);
    this.pictureBox2.Name = "pictureBox2";
    this.pictureBox2.Size = new System.Drawing.Size(80, 80);
    this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
    this.pictureBox2.TabIndex = 0;
    this.pictureBox2.TabStop = false;
    //
    // pictureBox1
    //
    this.pictureBox1.Cursor = System.Windows.Forms.Cursors.Cross;
    this.pictureBox1.Location = new System.Drawing.Point(0, 0);
    this.pictureBox1.Name = "pictureBox1";
    this.pictureBox1.Size = new System.Drawing.Size(500, 500);
    this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
    this.pictureBox1.TabIndex = 0;
    this.pictureBox1.TabStop = false;
    this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);
    this.pictureBox1.DoubleClick += new System.EventHandler(this.pictureBox1_DoubleClick);
    this.pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);
    //
    // label1
    //
    this.label1.ForeColor = System.Drawing.Color.Blue;
    this.label1.Location = new System.Drawing.Point(8, 520);
    this.label1.Name = "label1";
    this.label1.Size = new System.Drawing.Size(296, 24);
    this.label1.TabIndex = 2;
    this.label1.Text = "说明:鼠标单击可放大图片,双击可还原初始大小。";
    this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
    //
    // Form1
    //
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(522, 551);
    this.Controls.Add(this.label1);
    this.Controls.Add(this.button1);
    this.Controls.Add(this.panel1);
    this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
    this.MaximizeBox = false;
    this.Name = "Form1";
    this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
    this.Text = "图片放大镜 - 测试版 http://www.hbhmao.cn";
    this.panel1.ResumeLayout(false);
    this.panel2.ResumeLayout(false);
    this.ResumeLayout(false);

    }
    #endregion

    [STAThread]
    static void Main()
    {
    Application.Run(new Form1());
    }

    private void button1_Click(object sender, System.EventArgs e)
    {
    openFileDialog1.InitialDirectory = Application.StartupPath;
    openFileDialog1.Filter = "图片文件|*.jpg;*.bmp;*.gif;*.jpeg;*.png";
    if (openFileDialog1.ShowDialog() != System.Windows.Forms.DialogResult.OK)
    {
    return;
    }
    pictureBox1.Width = pictureBox1.Height = 500;
    try
    {
    img = Image.FromFile(openFileDialog1.FileName);
    if (img.Width < img.Height)
    {
    pictureBox1.Width = (int)((1.0 * img.Width / img.Height) * pictureBox1.Height);
    }
    else
    {
    pictureBox1.Height = (int)((1.0 * img.Height / img.Width) * pictureBox1.Width);
    }
    pictureBox1.Image = img;
    pictureBox2.Width = img.Width * scale;
    pictureBox2.Height = img.Height * scale;
    pictureBox2.Image = img;
    }
    catch (OutOfMemoryException ee)
    {
    MessageBox.Show("文件类型不对"+ee);
    }
    catch (Exception ee)
    {
    MessageBox.Show("不知名错误"+ee);
    }
    }

    private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    if (img != null)
    {
    int left = (int)(e.X * (1.0 * img.Width/pictureBox1.Width)*scale);
    int top = (int)(e.Y * (1.0 * img.Height/pictureBox1.Height)*scale);

    left -= panel2.Width/2;
    top -= panel2.Height/2;

    pictureBox2.Left = -left;
    pictureBox2.Top = -top;

    pictureBox1.Refresh();
    }
    panel2.Top = e.Y - panel2.Height / 2;
    panel2.Left = e.X - panel2.Width / 2;
    }

    private void pictureBox1_Click(object sender, System.EventArgs e)
    {
    if (img == null || scale > 10)
    {
    return;
    }
    scale++;
    panel2.Width += 10;
    panel2.Height += 10;
    pictureBox2.Width = img.Width * scale;
    pictureBox2.Height = img.Height * scale;
    }

    private void pictureBox1_DoubleClick(object sender, System.EventArgs e)
    {
    if (img == null)
    {
    return;
    }
    scale = 1;
    panel2.Width = 80;
    panel2.Height = 80;
    pictureBox2.Width = img.Width * scale;
    pictureBox2.Height = img.Height * scale;
    }

    }
    }
  • 相关阅读:
    一行代码搞定Dubbo接口调用
    测试周期内测试进度报告规范
    jq 一个强悍的json格式化查看工具
    浅析Docker容器的应用场景
    HDU 4432 Sum of divisors (水题,进制转换)
    HDU 4431 Mahjong (DFS,暴力枚举,剪枝)
    CodeForces 589B Layer Cake (暴力)
    CodeForces 589J Cleaner Robot (DFS,或BFS)
    CodeForces 589I Lottery (暴力,水题)
    CodeForces 589D Boulevard (数学,相遇)
  • 原文地址:https://www.cnblogs.com/jcomet/p/1242817.html
Copyright © 2011-2022 走看看