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

📄 magicdialog.cs

📁 一个C#开发的类似PHOTOSHOP的软件,用到了很多图形算法.
💻 CS
字号:
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;
using PhotoSprite.ImageProcessing;

namespace PhotoSprite.Dialog
{
  public partial class MagicDialog : Form
  {
    private WinMain parent = null;
    private Bitmap srcImage = null;
    private Bitmap bgImage = null;
    private Bitmap fgImage = null;
    private Region validRegion = new Region();

    public MagicDialog(WinMain parent)
    {
      InitializeComponent();

      this.parent = parent;
      this.srcImage = (Bitmap)this.parent.canvasMain.Image.Clone();
    }

    private void MagicDialog_Load(object sender, EventArgs e)
    {
      this.parent.layer.Visible = false;

      validRegion = new Region(new Rectangle(0, 0, this.srcImage.Width, this.srcImage.Height));
      validRegion.Intersect(this.parent.layer.Bounds);

      RegionClip rc = new RegionClip(validRegion);
      this.bgImage = rc.Hold((Bitmap)this.parent.canvasMain.Image.Clone());
      rc.SelectedRegion.Translate(-this.parent.layer.Bounds.X, -this.parent.layer.Bounds.Y);
      this.fgImage = rc.Hold((Bitmap)this.parent.layer.Image.Clone());
      rc.SelectedRegion.Translate(this.parent.layer.Bounds.X, this.parent.layer.Bounds.Y);

      UpdateCanvas();
    }

    private void btnCancel_Click(object sender, EventArgs e)
    {
      this.parent.canvasMain.Image = (Bitmap)this.srcImage.Clone();
      this.parent.layer.Visible = true;
    }

    private void transparencyTrackBar_Scroll(object sender, EventArgs e)
    {
      this.transparencyUpDown.Value = this.transparencyTrackBar.Value;
    }

    private void contrastTrackBar_Scroll(object sender, EventArgs e)
    {
      this.contrastUpDown.Value = this.contrastTrackBar.Value;
    }

    private void transparencyUpDown_ValueChanged(object sender, EventArgs e)
    {
      this.transparencyTrackBar.Value = (int)this.transparencyUpDown.Value;
      UpdateCanvas();
    }

    private void contrastUpDown_ValueChanged(object sender, EventArgs e)
    {
      this.contrastTrackBar.Value = (int)this.contrastUpDown.Value;
      UpdateCanvas();
    }

    private void UpdateCanvas()
    {
      Effect f = new Effect();
      Bitmap magicImage = f.Magic((Bitmap)bgImage.Clone(), (Bitmap)fgImage.Clone(), this.Transparency, this.Contrast);

      RectangleF validRect = new RectangleF();

      Bitmap dstImage = (Bitmap)this.srcImage.Clone();
      Graphics g = System.Drawing.Graphics.FromImage(dstImage);
      validRect = validRegion.GetBounds(g);

      g.DrawImage(magicImage, validRect,
        new Rectangle(0, 0, (int)validRect.Width, (int)validRect.Height), GraphicsUnit.Pixel);

      this.parent.canvasMain.Image = dstImage;

      magicImage.Dispose();
    }


    /// <summary>
    /// 获取透明度
    /// </summary>
    public byte Transparency
    {
      get
      {
        return (byte)this.transparencyTrackBar.Value;
      }
    }

    /// <summary>
    /// 获取对比度
    /// </summary>
    public int Contrast
    {
      get
      {
        return this.contrastTrackBar.Value;
      }
    }

  }
}

⌨️ 快捷键说明

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