using PaintDotNet.Annotation.Enum;
using PaintDotNet.Base.CommTool;
using PaintDotNet.DbOpreate.DbBll;
using PaintDotNet.DbOpreate.DbModel;
using PaintDotNet.Base.SettingModel.LVMModel;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
namespace PaintDotNet.FieldView
{
///
/// 保存视场
///
internal class SaveViewDialog : Form
{
#region 控件
private RichTextBox richTextBox1;
private Button button1;
private Label label1;
private Label label2;
private PictureBox panel1;
private GroupBox groupBox1;
private GroupBox groupBox2;
private Panel panel2;
private TextBox textBox1;
private Panel panel3;
#endregion
private AppWorkspace appWorkspace;
private Region region;
private Bitmap bitmap;
private RectangleF rectangleF;
public SaveViewDialog(AppWorkspace appWorkspace, Region region, Bitmap bitmap)
{
this.appWorkspace = appWorkspace;
InitializeComponent();
InitializeLanguageText();
InitializeHint();
//视场预览
this.region = region;
this.bitmap = bitmap;
this.panel1.Image = panel1_Paint();
}
///
/// 绘制视场到图片
///
///
private Bitmap panel1_Paint()
{
Graphics graphic = Graphics.FromImage(bitmap);
rectangleF = region.GetBounds(graphic);
int width = (int)rectangleF.Width;
int height = (int)rectangleF.Height;
Rectangle rect = new Rectangle(0, 0, width, height);
Bitmap dstBitmap = new Bitmap(width, height);
BitmapData dstBmData = dstBitmap.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format32bppRgb);
IntPtr dstScan = dstBmData.Scan0;
unsafe
{
byte* dstP = (byte*)(void*)dstScan;
int dstOffset = dstBmData.Stride - width * 4;
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++, dstP += 4)
{
if (region.IsVisible(new Point(x + (int)(rectangleF.X), y + (int)(rectangleF.Y))))
{
dstP[0] = 255;
dstP[1] = 255;
dstP[2] = 255;
dstP[3] = 255;
}
else
{
dstP[0] = 0;
dstP[1] = 0;
dstP[2] = 0;
dstP[3] = 255;
}
}
dstP += dstOffset;
}
}
dstBitmap.UnlockBits(dstBmData);
return dstBitmap;
}
private void InitializeLanguageText()
{
this.button1.Text = PdnResources.GetString("Menu.File.Save.Text");
this.label1.Text = PdnResources.GetString("Menu.viewname.text") + ":";
this.label2.Text = PdnResources.GetString("Menu.viewsetting.Saveview.viewdescription.text") + ":";
this.groupBox1.Text = PdnResources.GetString("Menu.viewsetting.Saveview.viewpreview.text");
this.groupBox2.Text = PdnResources.GetString("Menu.viewsetting.Saveview.viewinformation.text");
this.Text = PdnResources.GetString("Menu.ViewSetting.SaveFieldOfView.Text");
}
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.button1 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.PictureBox();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.panel3 = new System.Windows.Forms.Panel();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.panel2 = new System.Windows.Forms.Panel();
((System.ComponentModel.ISupportInitialize)(this.panel1)).BeginInit();
this.groupBox1.SuspendLayout();
this.panel3.SuspendLayout();
this.groupBox2.SuspendLayout();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(8, 38);
this.textBox1.MaxLength = 10;
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(177, 21);
this.textBox1.TabIndex = 0;
//
// richTextBox1
//
this.richTextBox1.Location = new System.Drawing.Point(8, 88);
this.richTextBox1.MaxLength = 30;
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(177, 105);
this.richTextBox1.TabIndex = 1;
this.richTextBox1.Text = "";
//
// button1
//
this.button1.Location = new System.Drawing.Point(339, 231);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 2;
this.button1.Text = "保存";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(6, 19);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(65, 12);
this.label1.TabIndex = 3;
this.label1.Text = "视场名称:";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(6, 67);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(65, 12);
this.label2.TabIndex = 4;
this.label2.Text = "视场描述:";
//
// panel1
//
this.panel1.BackColor = System.Drawing.Color.Black;
this.panel1.Location = new System.Drawing.Point(3, 3);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(187, 173);
this.panel1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.panel1.TabIndex = 5;
this.panel1.TabStop = false;
//
// groupBox1
//
this.groupBox1.Controls.Add(this.panel3);
this.groupBox1.Location = new System.Drawing.Point(209, 12);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(205, 205);
this.groupBox1.TabIndex = 6;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "视场预览";
//
// panel3
//
this.panel3.BackColor = System.Drawing.Color.Black;
this.panel3.Controls.Add(this.panel1);
this.panel3.Location = new System.Drawing.Point(6, 20);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(193, 179);
this.panel3.TabIndex = 5;
//
// groupBox2
//
this.groupBox2.Controls.Add(this.label2);
this.groupBox2.Controls.Add(this.textBox1);
this.groupBox2.Controls.Add(this.richTextBox1);
this.groupBox2.Controls.Add(this.label1);
this.groupBox2.Location = new System.Drawing.Point(12, 12);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(191, 205);
this.groupBox2.TabIndex = 7;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "视场信息";
//
// panel2
//
this.panel2.BackColor = System.Drawing.Color.Gainsboro;
this.panel2.Location = new System.Drawing.Point(13, 224);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(401, 1);
this.panel2.TabIndex = 8;
//
// SaveViewDialog
//
this.ClientSize = new System.Drawing.Size(426, 266);
this.Controls.Add(this.panel2);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.button1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Name = "SaveViewDialog";
this.Text = "保存视场";
((System.ComponentModel.ISupportInitialize)(this.panel1)).EndInit();
this.groupBox1.ResumeLayout(false);
this.panel3.ResumeLayout(false);
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.ResumeLayout(false);
}
///
/// 设置提示文字
///
private void InitializeHint()
{
SystemLayer.SafeNativeMethods.SetCueText(this.textBox1, PdnResources.GetString("Menu.Pleaseenterthenameofview.text"));
SystemLayer.SafeNativeMethods.SetCueText(this.richTextBox1, PdnResources.GetString("Menu.Pleasenterthefieldfviewremarks.Text"));
}
///
/// 保存视场
///
///
///
private void button1_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(this.textBox1.Text))
{
MessageBox.Show(PdnResources.GetString("Menu.Pleaseenterthenameofview.text"));
return;
}
else
{
//判断视场名称是否重复
List list = mic_view_infos_BLL.FindDefaultByName(this.textBox1.Text);
if (list.Count>0)
{
MessageBox.Show(PdnResources.GetString("Menu.viewnamerepeated,pleaserename.text"));
return;
}
ViewListModel viewListModel = new ViewListModel();
viewListModel.RectangleFX = (int)rectangleF.X;
viewListModel.RectangleFY = (int)rectangleF.Y;
viewListModel.RectangleFW = (int)rectangleF.Width;
viewListModel.RectangleFH = (int)rectangleF.Height;
viewListModel.Views = this.appWorkspace.ActiveDocumentWorkspace.GetXmlFromViewOrLabelOrMeasure(DrawClass.View);
mic_view_infos info = new mic_view_infos();
info.view_name = this.textBox1.Text;
info.view_descrption = this.richTextBox1.Text;
info.view_xml = XmlSerializeHelper.XmlSerialize(viewListModel);
mic_view_infos_BLL.Add(info);
this.Close();
}
}
}
}