⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winmain.menu.cs

📁 一个C#开发的类似PHOTOSHOP的软件,用到了很多图形算法.
💻 CS
📖 第 1 页 / 共 4 页
字号:
      SketchDialog dlg = new SketchDialog(this.canvasMain);
      if (dlg.ShowDialog() == DialogResult.OK)
      {
        SaveCanvas();
      }
    }

    private void comicToolStripMenuItem_Click(object sender, EventArgs e)
    {
      Effect f = new Effect();
      Bitmap srcImage = this.canvasMain.Image;
      Bitmap dstImage = f.Comic((Bitmap)srcImage.Clone());

      SaveCanvas(srcImage, dstImage);
    }

    private void aquaToolStripMenuItem_Click(object sender, EventArgs e)
    {
      Effect f = new Effect();
      Bitmap srcImage = this.canvasMain.Image;
      Bitmap dstImage = f.Aqua((Bitmap)srcImage.Clone());

      SaveCanvas(srcImage, dstImage);
    }

    private void sepiaToolStripMenuItem_Click(object sender, EventArgs e)
    {
      Effect f = new Effect();
      Bitmap srcImage = this.canvasMain.Image;
      Bitmap dstImage = f.Sepia((Bitmap)srcImage.Clone());

      SaveCanvas(srcImage, dstImage);
    }

    private void colorizeToolStripMenuItem_Click(object sender, EventArgs e)
    {
      if (colorDialog.ShowDialog() == DialogResult.OK)
      {
        Color color = colorDialog.Color;

        Effect f = new Effect();
        Bitmap srcImage = this.canvasMain.Image;
        Bitmap dstImage = f.Colorize((Bitmap)srcImage.Clone(), color.R, color.G, color.B);

        SaveCanvas(srcImage, dstImage);
      }
    }

    private void iceToolStripMenuItem_Click(object sender, EventArgs e)
    {
      Effect f = new Effect();
      Bitmap srcImage = this.canvasMain.Image;
      Bitmap dstImage = f.Ice((Bitmap)srcImage.Clone());

      SaveCanvas(srcImage, dstImage);
    }

    private void moltenToolStripMenuItem_Click(object sender, EventArgs e)
    {
      Effect f = new Effect();
      Bitmap srcImage = this.canvasMain.Image;
      Bitmap dstImage = f.Molten((Bitmap)srcImage.Clone());

      SaveCanvas(srcImage, dstImage);
    }

    private void darknessToolStripMenuItem_Click(object sender, EventArgs e)
    {
      Effect f = new Effect();
      Bitmap srcImage = this.canvasMain.Image;
      Bitmap dstImage = f.Darkness((Bitmap)srcImage.Clone());

      SaveCanvas(srcImage, dstImage);
    }

    private void subtenseToolStripMenuItem_Click(object sender, EventArgs e)
    {
      Effect f = new Effect();
      Bitmap srcImage = this.canvasMain.Image;
      Bitmap dstImage = f.Subtense((Bitmap)srcImage.Clone());

      SaveCanvas(srcImage, dstImage);
    }

    private void whimToolStripMenuItem_Click(object sender, EventArgs e)
    {
      Effect f = new Effect();
      Bitmap srcImage = this.canvasMain.Image;
      Bitmap dstImage = f.Whim((Bitmap)srcImage.Clone());

      SaveCanvas(srcImage, dstImage);
    }

    private void pinchToolStripMenuItem_Click(object sender, EventArgs e)
    {
      DegreeDialog dlg = new DegreeDialog(this.canvasMain);
      dlg.Text = "挤压";
      dlg.Maximum = 32;
      dlg.Minimum = 1;
      dlg.Degree = 15;
      dlg.Support = DegreeDialog.SupportMethod.Pinch;
      if (dlg.ShowDialog() == DialogResult.OK)
      {
        SaveCanvas();
      }
    }

    private void spherizeToolStripMenuItem_Click(object sender, EventArgs e)
    {
      Effect f = new Effect();
      Bitmap srcImage = this.canvasMain.Image;
      Bitmap dstImage = f.Spherize((Bitmap)srcImage.Clone());

      SaveCanvas(srcImage, dstImage);
    }

    private void swirlToolStripMenuItem_Click(object sender, EventArgs e)
    {
      DegreeDialog dlg = new DegreeDialog(this.canvasMain);
      dlg.Text = "漩涡";
      dlg.Maximum = 100;
      dlg.Minimum = 1;
      dlg.Degree = 50;
      dlg.Support = DegreeDialog.SupportMethod.Swirl;
      if (dlg.ShowDialog() == DialogResult.OK)
      {
        SaveCanvas();
      }
    }

    private void waveToolStripMenuItem_Click(object sender, EventArgs e)
    {
      DegreeDialog dlg = new DegreeDialog(this.canvasMain);
      dlg.Text = "波浪";
      dlg.Maximum = 32;
      dlg.Minimum = 1;
      dlg.Degree = 15;
      dlg.Support = DegreeDialog.SupportMethod.Wave;
      if (dlg.ShowDialog() == DialogResult.OK)
      {
        SaveCanvas();
      }
    }

    private void moireFringeToolStripMenuItem_Click(object sender, EventArgs e)
    {
      DegreeDialog dlg = new DegreeDialog(this.canvasMain);
      dlg.Text = "摩尔纹";
      dlg.Maximum = 16;
      dlg.Minimum = 1;
      dlg.Degree = 3;
      dlg.Support = DegreeDialog.SupportMethod.MoireFringe;
      if (dlg.ShowDialog() == DialogResult.OK)
      {
        SaveCanvas();
      }
    }

    private void diffuseToolStripMenuItem_Click(object sender, EventArgs e)
    {
      DegreeDialog dlg = new DegreeDialog(this.canvasMain);
      dlg.Text = "扩散";
      dlg.Maximum = 32;
      dlg.Minimum = 1;
      dlg.Degree = 3;
      dlg.Support = DegreeDialog.SupportMethod.Diffuse;
      if (dlg.ShowDialog() == DialogResult.OK)
      {
        SaveCanvas();
      }
    }

    private void findEdgeToolStripMenuItem_Click(object sender, EventArgs e)
    {
      AngleDialog dlg = new AngleDialog(this.canvasMain);
      dlg.Text = "查找边缘";
      dlg.Support = AngleDialog.SupportMethod.FindEdge;
      if (dlg.ShowDialog() == DialogResult.OK)
      {
        SaveCanvas();
      }
    }

    private void glowingEdgesToolStripMenuItem_Click(object sender, EventArgs e)
    {
      Effect f = new Effect();
      Bitmap srcImage = this.canvasMain.Image;
      Bitmap dstImage = f.GlowingEdge((Bitmap)srcImage.Clone());

      SaveCanvas(srcImage, dstImage);
    }

    private void lightingToolStripMenuItem_Click(object sender, EventArgs e)
    {
      DegreeDialog dlg = new DegreeDialog(this.canvasMain);
      dlg.Text = "灯光";
      dlg.Description = "光照强度";
      dlg.Degree = 220;
      dlg.Support = DegreeDialog.SupportMethod.Lighting;
      if (dlg.ShowDialog() == DialogResult.OK)
      {
        SaveCanvas();
      }
    }

    private void mosaicToolStripMenuItem_Click(object sender, EventArgs e)
    {
      DegreeDialog dlg = new DegreeDialog(this.canvasMain);
      dlg.Text = "马赛克";
      dlg.Maximum = 32;
      dlg.Minimum = 1;
      dlg.Degree = 5;
      dlg.Support = DegreeDialog.SupportMethod.Mosaic;
      if (dlg.ShowDialog() == DialogResult.OK)
      {
        SaveCanvas();
      }
    }

    private void oilPaintingToolStripMenuItem_Click(object sender, EventArgs e)
    {
      OilPaintingDialog dlg = new OilPaintingDialog(this.canvasMain);
      if (dlg.ShowDialog() == DialogResult.OK)
      {
        SaveCanvas();
      }
    }

    private void solarizeToolStripMenuItem_Click(object sender, EventArgs e)
    {
      Effect f = new Effect();
      Bitmap srcImage = this.canvasMain.Image;
      Bitmap dstImage = f.Solarize((Bitmap)srcImage.Clone());

      SaveCanvas(srcImage, dstImage);
    }

    private void customTemplateToolStripMenuItem_Click(object sender, EventArgs e)
    {
      CustomDialog dlg = new CustomDialog();
      if (dlg.ShowDialog() == DialogResult.OK)
      {
        Effect f = new Effect();
        Bitmap srcImage = this.canvasMain.Image;
        Bitmap dstImage = f.Custom((Bitmap)srcImage.Clone(), dlg.Sequence);

        SaveCanvas(srcImage, dstImage);
      }
    }

    private void inosculateToolStripMenuItem_Click(object sender, EventArgs e)
    {
      if (!this.layer.Visible)
        return;

      InosculateDialog dlg = new InosculateDialog(this);
      if (dlg.ShowDialog() == DialogResult.OK)
      {
        SaveCanvas();
      }
    }

    private void magicToolStripMenuItem_Click(object sender, EventArgs e)
    {
      if (!this.layer.Visible)
        return;

      MagicDialog dlg = new MagicDialog(this);
      if (dlg.ShowDialog() == DialogResult.OK)
      {
        SaveCanvas();

        // 在 IE 中打开
        ieToolStripMenuItem_Click(sender, e);
      }
    }

    private void redEyeRemovalToolStripMenuItem_Click(object sender, EventArgs e)
    {
      RedEyeRemovalDialog dlg = new RedEyeRemovalDialog(this.canvasMain);
      if (dlg.ShowDialog() == DialogResult.OK)
      {
        SaveCanvas();
      }
    }

    private void artStringToolStripMenuItem_Click(object sender, EventArgs e)
    {
      ArtStringDialog dlg = new ArtStringDialog();
      if (dlg.ShowDialog() == DialogResult.OK)
      {
        string destFile = saveFolder + history.Current.ToString() + ".txt";

        Effect f = new Effect();
        string text = f.Image2Text((Bitmap)this.canvasMain.Image.Clone(), dlg.ArtString, dlg.BlockWidth, dlg.BlockHeight);

        StreamWriter myStreamWriter = new StreamWriter(destFile, false, System.Text.Encoding.Default);
        myStreamWriter.Write(text);
        myStreamWriter.Close();

        MessageBox.Show("图像文件已被成功转换为文本文件!", "友情提醒",
          MessageBoxButtons.OK, MessageBoxIcon.Information);
        System.Diagnostics.Process.Start("NOTEPAD.EXE", destFile);
      }
    }


    /******************************
     * 
     * 科研应用菜单
     * 
     ******************************/

    /// <summary>
    /// 代数运算
    /// </summary>
    /// <param name="algebraMethod">代数运算方法</param>
    private void AlgebraOperate(Algebra.AlgebraMethod algebraMethod)
    {
      Algebra a = new Algebra();
      a.BackgroundRegion = new Region(new Rectangle(0, 0, this.canvasMain.Width, this.canvasMain.Height));
      a.ForegroundRegion = new Region(this.layer.Bounds);

      Bitmap bgImage = (Bitmap)this.canvasMain.Image.Clone();
      Bitmap fgImage = (Bitmap)this.layer.Image.Clone();
      Bitmap dstImage = a.AlgebraOperate(bgImage, fgImage, algebraMethod);

      this.canvasMain.Image = dstImage;
      SaveCanvas();

      this.layer.Visible = false;
    }

    /// <summary>
    /// 逻辑运算
    /// </summary>
    /// <param name="logicMethod">逻辑运算方法</param>
    private void LogicOperate(Logic.LogicMethod logicMethod)
    {
      Logic l = new Logic();
      l.BackgroundRegion = new Region(new Rectangle(0, 0, this.canvasMain.Width, this.canvasMain.Height));
      l.ForegroundRegion = new Region(this.layer.Bounds);

      Bitmap bgImage = (Bitmap)this.canvasMain.Image.Clone();
      Bitmap fgImage = (Bitmap)this.layer.Image.Clone();
      Bitmap dstImage = l.LogicOperate(bgImage, fgImage, logicMethod);

      this.canvasMain.Image = dstImage;
      SaveCanvas();

      this.layer.Visible = false;
    }

    private void algebraAddToolStripMenuItem_Click(object sender, EventArgs e)
    {
      if (!this.layer.Visible)
        return;

      AlgebraOperate(Algebra.AlgebraMethod.Add);
    }

    private void algebraSubtractToolStripMenuItem_Click(object sender, EventArgs e)
    {
      if (!this.layer.Visible)
        return;

      AlgebraOperate(Algebra.AlgebraMethod.Subtract);
    }

    private void algebraMultiplyToolStripMenuItem_Click(object sender, EventArgs e)
    {
      if (!this.layer.Visible)
        return;

      AlgebraOperate(Algebra.AlgebraMethod.Multiply);
    }

    private void algebraDivideToolStripMenuItem_Click(object sender, EventArgs e)
    {
      if (!this.layer.Visible)
        return;

      AlgebraOperate(Algebra.AlgebraMethod.Divide);
    }

    private void algebraAverageToolStripMenuItem_Click(object sender, EventArgs e)
    {
      if (!this.layer.Visible)
        return;

      AlgebraOperate(Algebra.AlgebraMethod.Average);
    }

    private void algebraDifferToolStripMenuItem_Click(object sender, EventArgs e)
    {
      if (!this.layer.Visible)
        return;

      AlgebraOperate(Algebra.AlgebraMethod.Differ);
    }

    private void algebraMaximizeToolStripMenuItem_Click(object sender, EventArgs e)
    {
      if (!this.layer.Visible)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -