📄 winmain.menu.cs
字号:
using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using PhotoSprite.Dialog;
using PhotoSprite.ImageProcessing;
namespace PhotoSprite
{
public partial class WinMain
{
/******************************
*
* 文件菜单
*
******************************/
private void newToolStripMenuItem_Click(object sender, EventArgs e)
{
NewDialog dlg = new NewDialog();
if (dlg.ShowDialog() == DialogResult.OK)
{
this.canvasMain.Visible = true;
// 获取用户指定宽高值
int newWidth = dlg.NewWidth;
int newHeight = dlg.NewHeight;
// 初始化一张空白图像
Bitmap newImage = new Bitmap(newWidth, newHeight, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
Graphics g = System.Drawing.Graphics.FromImage(newImage);
g.FillRectangle(new SolidBrush(Color.White), new Rectangle(0, 0, newWidth, newHeight));
// 保存到文件夹
this.canvasMain.Image = newImage;
SaveCanvas();
}
}
/// <summary>
/// 打开指定的文件
/// </summary>
/// <param name="fileName">图像文件名</param>
private void OpenFile(string fileName)
{
if (!this.canvasMain.Visible)
this.canvasMain.Visible = true;
string fileNameExt = fileName.Substring(fileName.LastIndexOf(".")).ToLower();
if (fileNameExt == ".jpg" || fileNameExt == ".gif" ||
fileNameExt == ".bmp" || fileNameExt == ".png" ||
fileNameExt == ".tif" || fileNameExt == ".psf")
{
if (history.Count > 0)
{
switch (MessageBox.Show("画布里已经有一幅图像,您要替换掉画布里的图像吗?\n如果选择“是”将替换掉现有图像!\n选择“否”将在新建图层里打开!",
"友情提醒", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information))
{
case DialogResult.Yes:
myGraphic.SourceFile = fileName;
myGraphic.DestFile = history.NextImage;
myGraphic.ConvertFormat();
history.Current++;
this.pathToolStripStatusLabel.Text = fileName;
break;
case DialogResult.No:
myGraphic.SourceFile = fileName;
myGraphic.DestFile = history.InitDirectory + "layer.psf";
myGraphic.ConvertFormat();
this.layer.Visible = true;
this.layer.ImageFile = myGraphic.DestFile;
break;
case DialogResult.Cancel:
break;
} // switch
}
else
{
myGraphic.SourceFile = fileName;
myGraphic.DestFile = history.NextImage;
myGraphic.ConvertFormat();
history.Current++;
history.Save();
this.pathToolStripStatusLabel.Text = fileName;
}
}
}
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
// 初始化打开目录
openFileDialog.InitialDirectory = openFolder;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string srcFileName = openFileDialog.FileName;
OpenFile(srcFileName);
RefreshHistory();
}
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
string saveFileName = this.pathToolStripStatusLabel.Text;
if (saveFileName == "")
{
saveAsToolStripMenuItem_Click(sender, e);
return;
}
myGraphic.SourceFile = history.CurrentImage;
myGraphic.DestFile = saveFileName;
myGraphic.ConvertFormat();
history.Save();
}
private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
// 初始化打开目录为软件运行目录
saveFileDialog.InitialDirectory = saveFolder;
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
string saveFileName = saveFileDialog.FileName;
myGraphic.SourceFile = history.CurrentImage;
myGraphic.DestFile = saveFileName;
myGraphic.ConvertFormat();
history.Save();
this.pathToolStripStatusLabel.Text = saveFileName;
}
}
private void ieToolStripMenuItem_Click(object sender, EventArgs e)
{
myGraphic.SourceFile = history.CurrentImage;
myGraphic.DestFile = history.InitDirectory + "ie.bmp";
myGraphic.ConvertFormat();
try
{
System.Diagnostics.Process.Start("IEXPLORE.EXE", myGraphic.DestFile);
}
catch
{
MessageBox.Show("打开 IE 失败!", "友情提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void fireworksToolStripMenuItem_Click(object sender, EventArgs e)
{
myGraphic.SourceFile = history.CurrentImage;
myGraphic.DestFile = history.InitDirectory + "fireworks.bmp";
myGraphic.ConvertFormat();
try
{
System.Diagnostics.Process.Start("Fireworks.EXE", myGraphic.DestFile);
}
catch
{
MessageBox.Show("打开 Fireworks 软件失败!", "友情提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void photoshopToolStripMenuItem_Click(object sender, EventArgs e)
{
myGraphic.SourceFile = history.CurrentImage;
myGraphic.DestFile = history.InitDirectory + "photoshop.bmp";
myGraphic.ConvertFormat();
try
{
System.Diagnostics.Process.Start("Photoshop.EXE", myGraphic.DestFile);
}
catch
{
MessageBox.Show("打开 Photoshop 软件失败!", "友情提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawImage(this.canvasMain.Image, 0, 0);
}
private void printPreviewToolStripMenuItem_Click(object sender, EventArgs e)
{
printPreviewDialog.ShowDialog();
}
private void printToolStripMenuItem_Click(object sender, EventArgs e)
{
if (printDialog.ShowDialog() == DialogResult.OK)
{
this.printDocument.Print();
}
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
/******************************
*
* 编辑菜单
*
******************************/
/// <summary>
/// 刷新历史记录状态
/// </summary>
private void RefreshHistory()
{
if (history.CanUndo)
{
this.undoToolStripMenuItem.Enabled = true;
this.undoToolStripButton.Enabled = true;
}
else
{
this.undoToolStripMenuItem.Enabled = false;
this.undoToolStripButton.Enabled = false;
}
if (history.CanRedo)
{
this.redoToolStripMenuItem.Enabled = true;
this.redoToolStripButton.Enabled = true;
}
else
{
this.redoToolStripMenuItem.Enabled = false;
this.redoToolStripButton.Enabled = false;
}
if (this.canvasMain.SelectedPath.PointCount > 0)
this.canvasMain.SelectedPath.Reset();
this.canvasMain.ImageFile = history.CurrentImage;
} // end of RefreshHistory
private void HistoryStatus(object sender, System.EventArgs e)
{
RefreshHistory();
}
private void undoToolStripMenuItem_Click(object sender, EventArgs e)
{
history.Current--;
RefreshHistory();
}
private void redoToolStripMenuItem_Click(object sender, EventArgs e)
{
history.Current++;
RefreshHistory();
}
private void cutToolStripMenuItem_Click(object sender, EventArgs e)
{
RegionClip gc = new RegionClip(this.canvasMain.SelectedRegion);
Bitmap srcImage = (Bitmap)this.canvasMain.Image.Clone();
Clipboard.SetDataObject(gc.Hold(srcImage), true);
this.canvasMain.Image = gc.Remove((Bitmap)this.canvasMain.Image.Clone());
SaveCanvas();
}
private void copyToolStripMenuItem_Click(object sender, EventArgs e)
{
RegionClip gc = new RegionClip(this.canvasMain.SelectedRegion);
Bitmap srcImage = (Bitmap)this.canvasMain.Image.Clone();
Clipboard.SetDataObject(gc.Hold(srcImage), true);
}
private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
{
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Bitmap))
{
// 保存到文件夹
myGraphic.DestFile = history.InitDirectory + "layer.psf";
myGraphic.Save((Bitmap)(Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap));
this.layer.Visible = true;
this.layer.ImageFile = myGraphic.DestFile;
}
}
private void optionToolStripMenuItem_Click(object sender, EventArgs e)
{
OptionDialog dlg = new OptionDialog();
if (dlg.ShowDialog() == DialogResult.OK)
{
openFolder = dlg.OpenFolder;
saveFolder = dlg.SaveFolder;
tmpFolder = dlg.TmpFolder;
undoTimes = dlg.UndoTimes;
//history = new HistoryImage(tmpFolder, undoTimes);
}
}
/******************************
*
* 图像.调整菜单
*
******************************/
private void colorBalanceToolStripMenuItem_Click(object sender, EventArgs e)
{
ColorBalanceDialog dlg = new ColorBalanceDialog(this.canvasMain);
if (dlg.ShowDialog() == DialogResult.OK)
{
SaveCanvas();
}
}
private void brightnessToolStripMenuItem_Click(object sender, EventArgs e)
{
DegreeDialog dlg = new DegreeDialog(this.canvasMain);
dlg.Text = "亮度";
dlg.Description = "亮度调节";
dlg.Minimum = -255;
dlg.Maximum = 255;
dlg.Degree = 0;
dlg.Support = DegreeDialog.SupportMethod.Brightness;
if (dlg.ShowDialog() == DialogResult.OK)
{
SaveCanvas();
}
}
private void contrastToolStripMenuItem_Click(object sender, EventArgs e)
{
DegreeDialog dlg = new DegreeDialog(this.canvasMain);
dlg.Text = "对比度";
dlg.Description = "对比度调节";
dlg.Minimum = -100;
dlg.Maximum = 100;
dlg.Degree = 0;
dlg.Support = DegreeDialog.SupportMethod.Contrast;
if (dlg.ShowDialog() == DialogResult.OK)
{
SaveCanvas();
}
}
private void hslToolStripMenuItem_Click(object sender, EventArgs e)
{
HslDialog dlg = new HslDialog(this.canvasMain);
if (dlg.ShowDialog() == DialogResult.OK)
{
SaveCanvas();
}
}
private void gammaCorrectToolStripMenuItem_Click(object sender, EventArgs e)
{
GammaCorrectDialog dlg = new GammaCorrectDialog(this.canvasMain);
if (dlg.ShowDialog() == DialogResult.OK)
{
SaveCanvas();
}
}
private void thresholdToolStripMenuItem_Click(object sender, EventArgs e)
{
DegreeDialog dlg = new DegreeDialog(this.canvasMain);
dlg.Text = "阈值";
dlg.Description = "阈值调节";
dlg.Support = DegreeDialog.SupportMethod.Thresholding;
if (dlg.ShowDialog() == DialogResult.OK)
{
SaveCanvas();
}
}
private void grayToolStripMenuItem_Click(object sender, EventArgs e)
{
GrayDialog dlg = new GrayDialog(this.canvasMain);
if (dlg.ShowDialog() == DialogResult.OK)
{
SaveCanvas();
}
}
private void invertToolStripMenuItem_Click(object sender, EventArgs e)
{
Adjustment a = new Adjustment();
Bitmap srcImage = this.canvasMain.Image;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -