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

📄 angledialog.cs

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

namespace PhotoSprite.Dialog
{
  public partial class AngleDialog : Form
  {
    /// <summary>
    /// 支持方法
    /// </summary>
    public enum SupportMethod
    {
      /// <summary>
      /// 旋转
      /// </summary>
      Rotate,

      /// <summary>
      /// 径向模糊
      /// </summary>
      RadialBlur,

      /// <summary>
      /// 灰度浮雕
      /// </summary>
      Emboss,

      /// <summary>
      /// 彩色浮雕
      /// </summary>
      Relief,

      /// <summary>
      /// 查找边缘
      /// </summary>
      FindEdge,

      /// <summary>
      /// 无
      /// </summary>
      None
    }

    private Canvas canvas = null;
    Bitmap srcImage = null;
    private SupportMethod support = SupportMethod.None;

    public AngleDialog(Canvas parent)
    {
      InitializeComponent();

      this.canvas = parent;
      this.srcImage = this.canvas.Image;
    }

    private void AngleDialog_Load(object sender, EventArgs e)
    {
      UpdateCanvas();
    }

    private void btnCancel_Click(object sender, EventArgs e)
    {
      this.canvas.Image = (Bitmap)srcImage.Clone();
    }

    private void angleChooser_MouseMove(object sender, MouseEventArgs e)
    {
      if (e.Button == MouseButtons.Left)
      {
        this.angleNumericUpDown.Value = this.angleChooser.Angle;
        UpdateCanvas();
      }
    }

    private void angleNumericUpDown_ValueChanged(object sender, EventArgs e)
    {
      this.angleChooser.Angle = (int)this.angleNumericUpDown.Value;
      UpdateCanvas();
    }

    private void UpdateCanvas()
    {
      Bitmap dstImage = new Bitmap(srcImage.Width, srcImage.Height);
      ImageTransform it = new ImageTransform();
      Effect e = new Effect();

      if (support == SupportMethod.Rotate)
      {
        dstImage = it.Rotate((Bitmap)srcImage.Clone(), this.Angle);
        this.canvas.Image = dstImage;
        return;
      }

      switch (support)
      {
        case SupportMethod.RadialBlur:
          dstImage = e.RadialBlur((Bitmap)srcImage.Clone(), this.Angle);
          break;

        case SupportMethod.Emboss:
          dstImage = e.Emboss((Bitmap)srcImage.Clone(), this.Angle);
          break;

        case SupportMethod.Relief:
          dstImage = e.Relief((Bitmap)srcImage.Clone(), this.Angle);
          break;

        case SupportMethod.FindEdge:
          dstImage = e.FindEdge((Bitmap)srcImage.Clone(), this.Angle);
          break;

        default:
          break;
      }

      RegionClip rc = new RegionClip(this.canvas.SelectedRegion);
      dstImage = rc.Replace((Bitmap)srcImage.Clone(), dstImage);

      this.canvas.Image = dstImage;
    }

    /// <summary>
    /// 获取或设置用户指定的角度值
    /// </summary>
    public int Angle
    {
      get
      {
        return this.angleChooser.Angle;
      }
      set
      {
        this.angleChooser.Angle = value;
        this.angleNumericUpDown.Value = value; 
      }
    }

    /// <summary>
    /// 获取或设置描述
    /// </summary>
    public string Description
    {
      get
      {
        return this.groupBox.Text;
      }
      set
      {
        this.groupBox.Text = value;
      }
    }

    /// <summary>
    /// 获取或设置支持方法
    /// </summary>
    public SupportMethod Support
    {
      get
      {
        return support;
      }
      set
      {
        support = value;
      }
    }

  }
}

⌨️ 快捷键说明

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