From 343d467c7868dcc194bb932deefb0f31def0dd3d Mon Sep 17 00:00:00 2001 From: moco Date: Sun, 24 Nov 2024 23:59:27 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=9B=BE=E5=83=8F=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=20=E5=9B=BE=E5=83=8F=E6=94=BE=E5=A4=A7=E7=BC=A9?= =?UTF-8?q?=E6=94=BE=E7=A7=BB=E5=8A=A8=20=20=E7=AE=97=E6=B3=95=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/PBAnaly/MainForm.cs | 366 +-------- src/PBAnaly/Module/BioanalysisMannage.cs | 635 +++++++++++++++ src/PBAnaly/Module/ImageProcess.cs | 1 + src/PBAnaly/PBAnaly.csproj | 19 + src/PBAnaly/UI/BioanalyImagePanel.Designer.cs | 338 ++++++++ src/PBAnaly/UI/BioanalyImagePanel.cs | 250 ++++++ src/PBAnaly/UI/BioanalyImagePanel.resx | 120 +++ .../UI/BioanayImagePaletteForm.Designer.cs | 743 ++++++++++++++++++ src/PBAnaly/UI/BioanayImagePaletteForm.cs | 20 + src/PBAnaly/UI/BioanayImagePaletteForm.resx | 120 +++ src/PBAnaly/UI/ImagePanel.Designer.cs | 6 +- src/PBAnaly/UI/ImagePanel.cs | 3 +- .../UI/ImageToolPaletteForm.Designer.cs | 19 +- src/PBBiologyVC/PBImageProcessVC.cpp | 2 +- 14 files changed, 2291 insertions(+), 351 deletions(-) create mode 100644 src/PBAnaly/Module/BioanalysisMannage.cs create mode 100644 src/PBAnaly/UI/BioanalyImagePanel.Designer.cs create mode 100644 src/PBAnaly/UI/BioanalyImagePanel.cs create mode 100644 src/PBAnaly/UI/BioanalyImagePanel.resx create mode 100644 src/PBAnaly/UI/BioanayImagePaletteForm.Designer.cs create mode 100644 src/PBAnaly/UI/BioanayImagePaletteForm.cs create mode 100644 src/PBAnaly/UI/BioanayImagePaletteForm.resx diff --git a/src/PBAnaly/MainForm.cs b/src/PBAnaly/MainForm.cs index c0d4393..46032e5 100644 --- a/src/PBAnaly/MainForm.cs +++ b/src/PBAnaly/MainForm.cs @@ -31,87 +31,12 @@ namespace PBAnaly private string color_bar = "YellowHot"; System.Windows.Forms.TableLayoutPanel tlp_main_images; - + + private Dictionary bioanalysisMannages = new Dictionary(); bool isRun = false; private Thread thread; - private void runThread() - { - //while (isRun) - //{ - - // int index = 0; - // foreach (var item in ImageToolMannage.imageDataPath) - // { - // if (index == 0) - // { - // if (pb_image1.InvokeRequired) - // { - // pb_image1.Invoke(new Action(() => pb_image1.Image = item.Value.pictureBox)); - // } - - - // } - // else if (index == 1) - // { - // if (pb_image2.InvokeRequired) - // { - // pb_image2.Invoke(new Action(() => pb_image2.Image = item.Value.pictureBox)); - // } - // } - // else if (index == 2) - // { - // if (pb_image3.InvokeRequired) - // { - // pb_image3.Invoke(new Action(() => pb_image9.Image = item.Value.pictureBox)); - // } - // } - // else if (index == 3) - // { - // if (pb_image4.InvokeRequired) - // { - // pb_image4.Invoke(new Action(() => pb_image9.Image = item.Value.pictureBox)); - // } - // } - // else if (index == 4) - // { - // if (pb_image5.InvokeRequired) - // { - // pb_image5.Invoke(new Action(() => pb_image9.Image = item.Value.pictureBox)); - // } - // } - // else if (index == 5) - // { - // if (pb_image6.InvokeRequired) - // { - // pb_image6.Invoke(new Action(() => pb_image9.Image = item.Value.pictureBox)); - // } - // } - // else if (index == 6) - // { - // if (pb_image7.InvokeRequired) - // { - // pb_image7.Invoke(new Action(() => pb_image9.Image = item.Value.pictureBox)); - // } - // } - // else if (index == 7) - // { - // if (pb_image8.InvokeRequired) - // { - // pb_image8.Invoke(new Action(() => pb_image9.Image = item.Value.pictureBox)); - // } - // } - // else if (index == 8) - // { - // if (pb_image9.InvokeRequired) - // { - // pb_image9.Invoke(new Action(() => pb_image9.Image = item.Value.pictureBox)); - // } - // } - // } - // Thread.Sleep(200); - //} - } + public MainForm(LoginForm InnerloginForm, Autholity autholity, string UserID) { InitializeComponent(); @@ -154,246 +79,8 @@ namespace PBAnaly materialSkinManager.Theme = MaterialSkinManager.Themes.DARK; // Theme 属性用来设置整体的主题 materialSkinManager.ColorScheme = new ColorScheme(Primary.BlueGrey800, Primary.BlueGrey900, Primary.BlueGrey500, Accent.Indigo700, TextShade.WHITE); // ColorScheme 属性来设置配色方案 } - public void SetPic(Bitmap p) - { - - int index = 0; - - //foreach (var item in ImageToolMannage.imageDataPath) - //{ - // if (index == 0) - // { - // var camera = item.Value.GetImage(); - // pb_image1.Image = util.ConvertRgb24ImageToBitmap(camera); - - // pb_image1.Refresh(); - - // } - // else if (index == 1) - // { - // pb_image2.Invoke(new Action(() => pb_image2.Image = item.Value.pictureBox)); - // } - // else if (index == 2) - // { - // pb_image3.Invoke(new Action(() => pb_image9.Image = item.Value.pictureBox)); - // } - // else if (index == 3) - // { - // pb_image4.Invoke(new Action(() => pb_image9.Image = item.Value.pictureBox)); - // } - // else if (index == 4) - // { - // pb_image5.Invoke(new Action(() => pb_image9.Image = item.Value.pictureBox)); - // } - // else if (index == 5) - // { - // if (pb_image6.InvokeRequired) - // { - // pb_image6.Invoke(new Action(() => pb_image6.Image = item.Value.pictureBox)); - // } - // } - // else if (index == 6) - // { - // pb_image7.Invoke(new Action(() => pb_image9.Image = item.Value.pictureBox)); - // } - // else if (index == 7) - // { - // pb_image8.Invoke(new Action(() => pb_image9.Image = item.Value.pictureBox)); - // } - // else if (index == 8) - // { - // pb_image9.Invoke(new Action(() => pb_image9.Image = item.Value.pictureBox)); - // } - // index++; - //} - } - private void initPanel() - { - //BeginUpdate(tl_right_main_view); - - //tl_right_main_view.RowCount = 1; - //tl_right_main_view.ColumnCount = 1; - - //tl_right_main_view.Controls.Clear(); - - - - //if (isGridView) - //{ - // pl_right.Controls.Clear(); - // itpf = new COMMImageToolPaletteForm(this); - // itpf.TopLevel = false; - // itpf.Dock = DockStyle.Fill; - // pb_colorbar = new PictureBox(); - // pb_colorbar.SizeMode = PictureBoxSizeMode.StretchImage; - - // tl_right_main_view.RowCount = 1; - // tl_right_main_view.ColumnCount = 2; - // tl_right_main_view.RowStyles.Clear(); - // tl_right_main_view.ColumnStyles.Clear(); - - // tl_right_main_view.ColumnStyles.Add(new ColumnStyle(SizeType.Percent,100f)); - // tl_right_main_view.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 100f)); - // pb_lists.Clear(); - // tlp_main_images = new TableLayoutPanel(); - // tl_right_main_view.Controls.Add(tlp_main_images,0,0); - // tl_right_main_view.Controls.Add(pb_colorbar, 1,0); - // pb_colorbar.Dock = DockStyle.Fill; - // pl_right.Controls.Add(itpf); - // pb_colorbar.Show(); - // pb_colorbar.Dock = DockStyle.Fill; - // itpf.Show(); - // tlp_main_images.Dock = DockStyle.Fill; - - // int capCount = ImageToolMannage.imageDataPath.Count; - // int rows = (int)Math.Ceiling(Math.Sqrt(capCount)); - // int cols = (int)Math.Ceiling((double)capCount / rows); - // if (capCount == 1) - // { - // rows = 1; - // cols = 0; - // } - // else if (capCount == 2) - // { - // rows = 1; - // cols = 2; - // } - // else if ( capCount == 3) - // { - // rows = 1; - // cols = capCount; - // } - // else if (capCount == 4) - // { - // rows = 2; - // cols = 2; - // } - // else if (capCount > 4 && capCount <= 6) - // { - // rows = 2; - // cols = 3; - // } - // else if (capCount > 6 && capCount <= 9) - // { - // rows = 3; - // cols = 3; - // } - - - // tlp_main_images.RowCount = rows; - // tlp_main_images.ColumnCount = cols; - - // tlp_main_images.RowStyles.Clear(); - // tlp_main_images.ColumnStyles.Clear(); - // for (int i = 0; i < rows; i++) - // { - // tlp_main_images.RowStyles.Add(new RowStyle(SizeType.Percent, 100f / rows)); - // } - // for (int i = 0; i < cols; i++) - // { - // tlp_main_images.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100f / cols)); - // } - - // int index = 0; - // int r = 0; - // int c = 0; - // foreach (var item in ImageToolMannage.imageDataPath) - // { - // if (index == 0) - // { - // tlp_main_images.Controls.Add(pb_image1, c, r); - // pb_image1.Dock = DockStyle.Fill; - // pb_image1.Show(); - // } - // else if(index == 1) - // { - // tlp_main_images.Controls.Add(pb_image2, c, r); - // pb_image2.Dock = DockStyle.Fill; - // pb_image2.Show(); - // } - // else if (index == 2) - // { - // tlp_main_images.Controls.Add(pb_image3, c, r); - // pb_image3.Dock = DockStyle.Fill; - // pb_image3.Show(); - // } - // else if (index == 3) - // { - // tlp_main_images.Controls.Add(pb_image4, c, r); - // pb_image4.Dock = DockStyle.Fill; - // pb_image4.Show(); - // } - // else if (index == 4) - // { - // tlp_main_images.Controls.Add(pb_image5, c, r); - // pb_image5.Dock = DockStyle.Fill; - // pb_image5.Show(); - // } - // else if (index == 5) - // { - // tlp_main_images.Controls.Add(pb_image6, c, r); - // pb_image6.Dock = DockStyle.Fill; - // pb_image6.Show(); - // } - // else if (index == 6) - // { - // tlp_main_images.Controls.Add(pb_image7, c, r); - // pb_image7.Dock = DockStyle.Fill; - // pb_image7.Show(); - // } - // else if (index == 7) - // { - // tlp_main_images.Controls.Add(pb_image8, c, r); - // pb_image8.Dock = DockStyle.Fill; - // pb_image8.Show(); - // } - // else if (index == 8) - // { - // tlp_main_images.Controls.Add(pb_image9, c, r); - // pb_image9.Dock = DockStyle.Fill; - // pb_image9.Show(); - // } - // c++; - // if (c >= cols) - // { - // r++; - // c = 0; - // } - // index++; - // } - - // isRun = true; - // thread = new Thread(runThread); - // thread.IsBackground = true; - // thread.Start(); - //} - //else - //{ - // isRun = false; - // tl_right_main_view.Controls.Add(DataProcess_panel); - // DataProcess_panel.Dock = DockStyle.Fill; - - // foreach (var frmEmbed in ImageToolMannage.imageDataPath.Values) - // { - // if (frmEmbed != null) - // { - // frmEmbed.TopLevel = false; - // DataProcess_panel.Controls.Add(frmEmbed); - // //FormGenerate_X = FormGenerate_X + 15; - // //FormGenerate_Y = FormGenerate_Y + 15; - // frmEmbed.Location = new System.Drawing.Point(FormGenerate_X, FormGenerate_Y); - // frmEmbed.Show(); // 显示 - // frmEmbed.BringToFront(); - // frmEmbed.initPicturebox(); - - - - - // } - // } - //} - //EndUpdate(tl_right_main_view); - } + + private void materialButton_changeFormSize_MouseMove(object sender, MouseEventArgs e) { @@ -621,31 +308,40 @@ namespace PBAnaly #endregion if (selectedFilePath != "") { - if (ImageToolMannage.imageDataPath.TryGetValue(selectedFilePath, out var value)) + //if (ImageToolMannage.imageDataPath.TryGetValue(selectedFilePath, out var value)) + //{ + // return; + //} + + if (bioanalysisMannages.TryGetValue(selectedFilePath, out var value)) { return; } + BioanalysisMannage bioanalysisMannage = new BioanalysisMannage(selectedFilePath, pl_right); + + DataProcess_panel.Controls.Add(bioanalysisMannage.GetImagePanel); + bioanalysisMannage.GetImagePanel.BringToFront(); + bioanalysisMannages[selectedFilePath] = bioanalysisMannage; + //ImagePanel frmEmbed = new ImagePanel(selectedFilePath, pl_right); + //ImageToolMannage.imageDataPath[selectedFilePath] = frmEmbed; - ImagePanel frmEmbed = new ImagePanel(selectedFilePath, pl_right); - ImageToolMannage.imageDataPath[selectedFilePath] = frmEmbed; + //if (frmEmbed != null) + //{ + // frmEmbed.TopLevel = false; + // DataProcess_panel.Controls.Add(frmEmbed); + // FormGenerate_X = FormGenerate_X + 15; + // FormGenerate_Y = FormGenerate_Y + 15; + // frmEmbed.Location = new System.Drawing.Point(FormGenerate_X, FormGenerate_Y); + // frmEmbed.Show(); // 显示 + // frmEmbed.BringToFront(); - if (frmEmbed != null) - { - frmEmbed.TopLevel = false; - DataProcess_panel.Controls.Add(frmEmbed); - FormGenerate_X = FormGenerate_X + 15; - FormGenerate_Y = FormGenerate_Y + 15; - frmEmbed.Location = new System.Drawing.Point(FormGenerate_X, FormGenerate_Y); - frmEmbed.Show(); // 显示 - frmEmbed.BringToFront(); - - //frmEmbed.RefreshUI(); - + // //frmEmbed.RefreshUI(); - } - initPanel(); + + //} + //initPanel(); } diff --git a/src/PBAnaly/Module/BioanalysisMannage.cs b/src/PBAnaly/Module/BioanalysisMannage.cs new file mode 100644 index 0000000..34a82c6 --- /dev/null +++ b/src/PBAnaly/Module/BioanalysisMannage.cs @@ -0,0 +1,635 @@ +using Aspose.Pdf.AI; +using PBAnaly.UI; +using ScottPlot.Panels; +using ScottPlot.Plottables; +using SixLabors.ImageSharp; +using SixLabors.ImageSharp.PixelFormats; +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Threading; +using System.Windows.Forms; + +namespace PBAnaly.Module +{ + + /// + /// 生物分析 管理类 + /// + public class BioanalysisMannage + { + public struct AlgAttribute + { + public int brightness; + public int brightnessMax; + public int brightnessMin; + + public int opacity; + public int opacityMax; + public int opacityMin; + + public int colorValue; + public int colorMinValue; + public int colorMin; + public int colorMax; + + public bool scientificON; + + public int colorIndex; + } + #region 变量 + private string path; + private string mark_path; + private string tif_marker_path; + private string tif_org_path; + private Image image_mark_L16 = null; + private byte[] image_mark_byte = null; + private Image image_mark_rgb24 = null; + private Image image_mark_and_org_rgb24 = null; + private Image image_org_L16 = null; + private byte[] image_org_byte = null; + private Image image_org_rgb24 = null; + private Image colorbar_rgb24_image = null; + private int colorbarWW = 200, colorh_onecolor = 10; + private int colorbarW = 600, colorbarH = 2600; + + private ReaLTaiizor.Controls.Panel pl_right; + private BioanalyImagePanel imagePanel = null; + private BioanayImagePaletteForm imagePaletteForm = null; + PBBiologyVC.PBImageProcessVC pbpvc = new PBBiologyVC.PBImageProcessVC(); + + private Thread algThread; + private bool isalgRun = false; + private bool isUpdateAlg = false; + private Queue queueAlgAttribute = new Queue(); + + #region 参数 + AlgAttribute algAttribute = new AlgAttribute(); + + #region imagepanel 操作的参数 + private bool isDragging = false; + private System.Drawing.Point mouseDownPosition; + private System.Drawing.Point pictureBoxStartPosition; + + #endregion + #endregion + + #region 构造函数 + + public int Brightness + { + get { return algAttribute.brightness; } + set + { + if (algAttribute.brightness != value) + { + bool fix = false; + algAttribute.brightness = value; + if (imagePaletteForm.dtb_brightness.Value != algAttribute.brightness) + { + imagePaletteForm.dtb_brightness.Value = algAttribute.brightness; + fix = true; + } + + if (imagePaletteForm.nud_brightness.Value != algAttribute.brightness) + { + imagePaletteForm.nud_brightness.Value = algAttribute.brightness; + fix = true; + } + + if (fix && isUpdateAlg) + { + queueAlgAttribute.Enqueue(algAttribute); + } + } + + } + } + public int Opacity + { + get { return algAttribute.opacity; } + set + { + if (algAttribute.brightness != value) + { + bool fix = false; + algAttribute.opacity = value; + if (imagePaletteForm.dtb_opacity.Value != algAttribute.opacity) + { + imagePaletteForm.dtb_opacity.Value = algAttribute.opacity; + fix = true; + } + + if (imagePaletteForm.nud_opacity.Value != algAttribute.opacity) + { + + imagePaletteForm.nud_opacity.Value = algAttribute.opacity; + fix = true; + } + + if (fix && isUpdateAlg) + { + queueAlgAttribute.Enqueue(algAttribute); + } + } + + } + } + public int ColorMax + { + get { return algAttribute.colorValue; } + set + { + if (algAttribute.colorValue != value) + { + var fix = false; + algAttribute.colorValue = value; + + if(algAttribute.colorValue != imagePaletteForm.dtb_colorMax.Value) + imagePaletteForm.dtb_colorMax.Value = algAttribute.colorValue; + if (algAttribute.colorValue != imagePaletteForm.nud_colorMax.Value) + imagePaletteForm.nud_colorMax.Value = algAttribute.colorValue; + if (algAttribute.colorValue > imagePaletteForm.nud_colorMin.Value) + { + + imagePaletteForm.nud_colorMin.Maximum = algAttribute.colorValue; + imagePaletteForm.dtb_colorMin.Maximum = algAttribute.colorValue; + fix = true; + } + else if(algAttribute.colorValue < imagePaletteForm.nud_colorMin.Value) + { + imagePaletteForm.nud_colorMin.Maximum = algAttribute.colorValue; + imagePaletteForm.dtb_colorMin.Maximum = algAttribute.colorValue; + imagePaletteForm.nud_colorMin.Value = algAttribute.colorValue; + fix |= true; + } + + if (fix && isUpdateAlg) + { + queueAlgAttribute.Enqueue(algAttribute); + } + } + + } + } + public int ColorMin + { + get { return algAttribute.colorMinValue; } + set + { + if (algAttribute.colorMinValue != value) + { + bool fix = false; + algAttribute.colorMinValue = value; + if (algAttribute.colorMinValue != imagePaletteForm.dtb_colorMin.Value) + { + imagePaletteForm.dtb_colorMin.Value = algAttribute.colorMinValue; + fix = true; + } + + if (algAttribute.colorMinValue != imagePaletteForm.nud_colorMin.Value) + { + imagePaletteForm.nud_colorMin.Value = algAttribute.colorMinValue; + fix = true; + } + + + if (fix && isUpdateAlg) + { + queueAlgAttribute.Enqueue(algAttribute); + } + } + + + } + } + + public int ColorIndex + { + get { return algAttribute.colorIndex; } + set + { + if (algAttribute.colorIndex != value) + { + bool fix = true; + algAttribute.colorIndex = value; + + if (fix && isUpdateAlg) + { + queueAlgAttribute.Enqueue(algAttribute); + } + } + } + } + + public bool ScientificON + { + get { return algAttribute.scientificON; } + set + { + if (algAttribute.scientificON != value) + { + bool fix = true; + algAttribute.scientificON = value; + + if (fix && isUpdateAlg) + { + queueAlgAttribute.Enqueue(algAttribute); + } + } + } + } + #endregion + #endregion + + public BioanalysisMannage(string _path, ReaLTaiizor.Controls.Panel _pl_right) + { + isUpdateAlg = false; + this.pl_right = _pl_right; + imagePanel = new BioanalyImagePanel(); + imagePanel.TopLevel = false; + imagePanel.Show(); + imagePanel.BringToFront(); + + imagePaletteForm = new BioanayImagePaletteForm(); + imagePaletteForm.TopLevel = false; + imagePaletteForm.Dock = System.Windows.Forms.DockStyle.Fill; + this.pl_right.Controls.Add(imagePaletteForm); + imagePaletteForm.BringToFront(); + imagePaletteForm.Show(); + + this.path = _path; + + ReadTif();// 读tif档 + + algAttribute.brightness = 127; + algAttribute. brightnessMax = 254; + algAttribute. brightnessMin = 0; + + algAttribute. opacity = 100; + algAttribute. opacityMax = 100; + algAttribute. opacityMin = 0; + + algAttribute. colorValue = 65534; + algAttribute. colorMinValue = 5999; + algAttribute. colorMin = 0; + algAttribute. colorMax = 65535; + + algAttribute.scientificON = false; + algAttribute.colorIndex = 0; + + // 初始化控件 + Init(); + + // 初始化执行算法 + ImageAlg(algAttribute); + isalgRun = true; + algThread = new Thread(new ThreadStart(AlgRun)); + algThread.IsBackground = true; + algThread.Start(); + + isUpdateAlg = true;// 开始可以更新算法 + } + + #region 方法 + private void Init() + { + imagePanel.cbb_mode.SelectedIndexChanged += Cbb_mode_SelectedIndexChanged; ; + imagePanel.cbb_mode.SelectedIndex = 0; + + imagePaletteForm.dtb_brightness.Maximum = algAttribute.brightnessMax; + imagePaletteForm.dtb_brightness.Minimum = algAttribute.brightnessMin; + imagePaletteForm.dtb_brightness.Value = algAttribute.brightness; + imagePaletteForm.nud_brightness.Minimum = algAttribute.brightnessMin; + imagePaletteForm.nud_brightness.Maximum = algAttribute.brightnessMax; + imagePaletteForm.nud_brightness.Value = algAttribute.brightness; + + + + imagePaletteForm.dtb_opacity.Maximum = algAttribute.opacityMax; + imagePaletteForm.dtb_opacity.Minimum = algAttribute.opacityMin; + imagePaletteForm.dtb_opacity.Value = algAttribute.opacity; + imagePaletteForm.nud_opacity.Maximum = algAttribute.opacityMax; + imagePaletteForm.nud_opacity.Minimum = algAttribute.opacityMin; + imagePaletteForm.nud_opacity.Value = algAttribute.opacity; + + imagePaletteForm.dtb_colorMax.Maximum = algAttribute.colorMax; + imagePaletteForm.dtb_colorMax.Minimum = algAttribute.colorMin; + imagePaletteForm.dtb_colorMax.Value = algAttribute.colorValue; + imagePaletteForm.nud_colorMax.Maximum = algAttribute.colorMax; + imagePaletteForm.nud_colorMax.Minimum= algAttribute.colorMin; + imagePaletteForm.nud_colorMax.Value= algAttribute.colorValue; + + imagePaletteForm.dtb_colorMin.Maximum = algAttribute.colorMin; + imagePaletteForm.dtb_colorMin.Maximum = algAttribute.colorValue; + imagePaletteForm.dtb_colorMin.Value = algAttribute.colorValue; + imagePaletteForm.nud_colorMin.Maximum = algAttribute.colorValue; + imagePaletteForm.nud_colorMin.Minimum = algAttribute.colorMin; + imagePaletteForm.nud_colorMin.Value= algAttribute.colorMinValue; + imagePaletteForm.cb_colortable.SelectedIndex = algAttribute.colorIndex; + + imagePaletteForm.dtb_brightness.ValueChanged += Dtb_brightness_ValueChanged; + imagePaletteForm.dtb_opacity.ValueChanged += Dtb_opacity_ValueChanged; + imagePaletteForm.nud_brightness.ValueChanged += Nud_brightness_ValueChanged; + imagePaletteForm.nud_opacity.ValueChanged += Nud_opacity_ValueChanged; + imagePaletteForm.dtb_colorMax.ValueChanged += Dtb_colorMax_ValueChanged; + imagePaletteForm.dtb_colorMin.ValueChanged += Dtb_colorMin_ValueChanged; + imagePaletteForm.nud_colorMax.ValueChanged += Nud_colorMax_ValueChanged; + imagePaletteForm.nud_colorMin.ValueChanged += Nud_colorMin_ValueChanged; + imagePaletteForm.cb_colortable.SelectedIndexChanged += Cb_colortable_SelectedIndexChanged; + + + imagePanel.cb_scientific.CheckedChanged += Cb_scientific_CheckedChanged; + + imagePanel.image_pl.MouseDown += Image_pl_MouseDown; + imagePanel.image_pl.DoubleClick += Image_pl_DoubleClick; + imagePanel.image_pl.MouseMove += Image_pl_MouseMove; + imagePanel.image_pl.MouseUp += Image_pl_MouseUp; + imagePanel.image_pl.Paint += Image_pl_Paint; + + + + } + + + private void ReadTif() + { + string[] tifFiles = Directory.GetFiles(path, "*.tif", SearchOption.TopDirectoryOnly); + foreach (string tifFile in tifFiles) + { + if (tifFile.ToUpper().Contains("MARKER")) + { + tif_marker_path = tifFile; + image_mark_L16 = util.LoadTiffAsL16(tif_marker_path); + image_mark_byte = util.ConvertL16ImageToByteArray(image_mark_L16); + + } + else + { + tif_org_path = tifFile; + image_org_L16 = util.LoadTiffAsL16(tif_org_path); + image_org_byte = util.ConvertL16ImageToByteArray(image_org_L16); + } + } + + imagePanel.SetButtomLabel($"{image_mark_L16.Width} x {image_mark_L16.Height}" ); + + } + + private void ImageAlg(AlgAttribute aatb) + { + + var pseu_8bit_3_byte = new byte[image_org_byte.Length*3]; + var pseu_and_mark_8bit_3_byte = new byte[image_org_byte.Length * 3]; + var colorbarimage = new byte[colorbarW * colorbarH * 3]; + double opacity = (aatb.opacity / 100.0); + int brightness = aatb.brightness - 127; + unsafe + { + fixed (byte* pseu_16_byte_src = image_org_byte) + { + fixed (byte* pseu_8bit_3_byte_src = pseu_8bit_3_byte) + { + fixed (byte* pseu_and_mark_8bit_3_byte_src = pseu_and_mark_8bit_3_byte) + { + fixed (byte* mark_L16_byte_src = image_mark_byte) + { + fixed (byte* colorbarimage_src = colorbarimage) + { + var ret = pbpvc.render_process(pseu_16_byte_src, mark_L16_byte_src, pseu_8bit_3_byte_src, + pseu_and_mark_8bit_3_byte_src, colorbarimage_src, aatb.colorIndex, (ushort)(colorbarW), (ushort)colorbarH, 16, (ushort)image_mark_L16.Width, (ushort)image_mark_L16.Height, + 1, aatb.colorValue, aatb.colorMinValue, aatb.scientificON == true ? 1 : 0, false, (ushort)colorbarWW, (ushort)colorh_onecolor, brightness, 1.0, opacity); + if (ret != -1) + { + image_org_rgb24 = util.ConvertByteArrayToRgb24Image(pseu_8bit_3_byte, image_mark_L16.Width, (ushort)image_mark_L16.Height, 3); + image_mark_and_org_rgb24 = util.ConvertByteArrayToRgb24Image(pseu_and_mark_8bit_3_byte, image_mark_L16.Width, (ushort)image_mark_L16.Height, 3); + colorbar_rgb24_image = util.ConvertByteArrayToRgb24Image(colorbarimage, colorbarW, colorbarH, 3); + } + } + + + } + + } + + } + } + } + + RefreshCbb(); + + } + + + private void AlgRun() + { + while (isalgRun) + { + if (isUpdateAlg == false) continue; + AlgAttribute? aatb = null ; + if (queueAlgAttribute.Count > 1) + { + while (queueAlgAttribute.Count>1) + { + queueAlgAttribute.Dequeue(); + } + } + if (queueAlgAttribute.Count > 0) + { + aatb = queueAlgAttribute.Dequeue(); + } + if (aatb !=null) + { + ImageAlg((AlgAttribute)aatb); + + } + Thread.Sleep(5); + } + } + public void RefreshCbb() + { + if (imagePanel.cbb_mode.InvokeRequired) + { + imagePanel.cbb_mode.Invoke(new MethodInvoker(() => + { + switch (imagePanel.cbb_mode.Text) + { + case "merge": + if (image_mark_and_org_rgb24 != null) + imagePanel.SetImage(image_mark_and_org_rgb24, colorbar_rgb24_image); + break; + case "mark": + if (image_mark_rgb24 != null) + imagePanel.SetImage(image_mark_rgb24, colorbar_rgb24_image); + else + imagePanel.SetImage(image_mark_L16, colorbar_rgb24_image); + break; + case "pseudocolor": + if (image_org_rgb24 != null) + imagePanel.SetImage(image_org_rgb24, colorbar_rgb24_image); + else + imagePanel.SetImage(image_org_L16); + + break; + } + })); + + } + else + { + switch (imagePanel.cbb_mode.Text) + { + case "merge": + if (image_mark_and_org_rgb24 != null) + imagePanel.SetImage(image_mark_and_org_rgb24, colorbar_rgb24_image); + break; + case "mark": + if (image_mark_rgb24 != null) + imagePanel.SetImage(image_mark_rgb24, colorbar_rgb24_image); + else + imagePanel.SetImage(image_mark_L16, colorbar_rgb24_image); + break; + case "pseudocolor": + if (image_org_rgb24 != null) + imagePanel.SetImage(image_org_rgb24, colorbar_rgb24_image); + else + imagePanel.SetImage(image_org_L16); + + break; + } + + } + } + #endregion + + + #region 事件 + private void Cb_scientific_CheckedChanged(object sender, AntdUI.BoolEventArgs e) + { + ScientificON = imagePanel.cb_scientific.Checked; + } + + + private void Cbb_mode_SelectedIndexChanged(object sender, System.EventArgs e) + { + if(imagePanel.cbb_mode.Text == "mark") + { + imagePaletteForm.cb_colortable.SelectedIndex = 7; + } + else + { + RefreshCbb(); + } + + + } + private void Dtb_brightness_ValueChanged() + { + Brightness = imagePaletteForm.dtb_brightness.Value; + } + private void Dtb_opacity_ValueChanged() + { + Opacity = imagePaletteForm.dtb_opacity.Value; + } + private void Nud_opacity_ValueChanged(object sender, System.EventArgs e) + { + Opacity = (int)imagePaletteForm.nud_opacity.Value; + } + + private void Nud_brightness_ValueChanged(object sender, System.EventArgs e) + { + Brightness = (int)imagePaletteForm.nud_brightness.Value; + } + private void Nud_colorMin_ValueChanged(object sender, System.EventArgs e) + { + ColorMin = (int)imagePaletteForm.nud_colorMin.Value; + } + + private void Nud_colorMax_ValueChanged(object sender, System.EventArgs e) + { + ColorMax = (int)imagePaletteForm.nud_colorMax.Value; + + + } + + private void Dtb_colorMin_ValueChanged() + { + ColorMin = (int)imagePaletteForm.dtb_colorMin.Value; + } + + private void Dtb_colorMax_ValueChanged() + { + ColorMax = (int)imagePaletteForm.dtb_colorMax.Value; + } + private void Cb_colortable_SelectedIndexChanged(object sender, System.EventArgs e) + { + ColorIndex = imagePaletteForm.cb_colortable.SelectedIndex; + } + + + #region imagepanel + private void Image_pl_Paint(object sender, PaintEventArgs e) + { + + } + + private void Image_pl_MouseUp(object sender, MouseEventArgs e) + { + if (isDragging && e.Button == MouseButtons.Left) + { + imagePanel.pl_bg_panel.Cursor = Cursors.Default; + } + + } + + private void Image_pl_MouseMove(object sender, MouseEventArgs e) + { + if (isDragging && e.Button == MouseButtons.Left) + { + int deltaX = e.X - mouseDownPosition.X; + int deltaY = e.Y - mouseDownPosition.Y; + + // 仅当鼠标移动时调整位置,减少频繁重绘 + if (Math.Abs(deltaX) > 1 || Math.Abs(deltaY) > 1) + { + imagePanel.pl_bg_panel.Left = pictureBoxStartPosition.X + deltaX; + imagePanel.pl_bg_panel.Top = pictureBoxStartPosition.Y + deltaY; + + // 防止 pl_bg_image 拖动超出 pl_image 的范围 + if (imagePanel.pl_bg_panel.Left > 0) imagePanel.pl_bg_panel.Left = 0; + if (imagePanel.pl_bg_panel.Top > 0) imagePanel.pl_bg_panel.Top = 0; + if (imagePanel.pl_bg_panel.Right < imagePanel.pl_panel_image.ClientSize.Width) + imagePanel.pl_bg_panel.Left = imagePanel.pl_panel_image.ClientSize.Width - imagePanel.pl_bg_panel.Width; + if (imagePanel.pl_bg_panel.Bottom < imagePanel.pl_panel_image.ClientSize.Height) + imagePanel.pl_bg_panel.Top = imagePanel.pl_panel_image.ClientSize.Height - imagePanel.pl_bg_panel.Height; + } + } + } + + private void Image_pl_DoubleClick(object sender, System.EventArgs e) + { + + } + + private void Image_pl_MouseDown(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left && imagePanel.IsImageLargerThanPanel()) + { + isDragging = true; + mouseDownPosition = e.Location; + pictureBoxStartPosition = imagePanel.pl_bg_panel.Location; + imagePanel.pl_bg_panel.Cursor = Cursors.Hand; + } + } + + #endregion + #endregion + #region 对外接口 + public BioanalyImagePanel GetImagePanel + { + get { return imagePanel; } + } + #endregion + } +} diff --git a/src/PBAnaly/Module/ImageProcess.cs b/src/PBAnaly/Module/ImageProcess.cs index 31461fd..e68bc0d 100644 --- a/src/PBAnaly/Module/ImageProcess.cs +++ b/src/PBAnaly/Module/ImageProcess.cs @@ -94,6 +94,7 @@ namespace PBAnaly.Module return new System.Drawing.Point(realX, realY); } + public static System.Drawing.Rectangle GetRealImageRectangle(PictureBox pictureBox, System.Drawing.Rectangle mouseRectangle) { if (pictureBox.Image == null) diff --git a/src/PBAnaly/PBAnaly.csproj b/src/PBAnaly/PBAnaly.csproj index df0ce24..97d8e44 100644 --- a/src/PBAnaly/PBAnaly.csproj +++ b/src/PBAnaly/PBAnaly.csproj @@ -87,6 +87,7 @@ MainForm.cs + @@ -112,6 +113,18 @@ AnalyzeDataForm.cs + + Form + + + BioanalyImagePanel.cs + + + Form + + + BioanayImagePaletteForm.cs + UserControl @@ -185,6 +198,12 @@ AnalyzeDataForm.cs + + BioanalyImagePanel.cs + + + BioanayImagePaletteForm.cs + colorbarControl.cs diff --git a/src/PBAnaly/UI/BioanalyImagePanel.Designer.cs b/src/PBAnaly/UI/BioanalyImagePanel.Designer.cs new file mode 100644 index 0000000..c4a479b --- /dev/null +++ b/src/PBAnaly/UI/BioanalyImagePanel.Designer.cs @@ -0,0 +1,338 @@ +namespace PBAnaly.UI +{ + partial class BioanalyImagePanel + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.windowBar1 = new AntdUI.WindowBar(); + this.panel1 = new AntdUI.Panel(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel2 = new AntdUI.Panel(); + this.cbb_mode = new System.Windows.Forms.ComboBox(); + this.label1 = new AntdUI.Label(); + this.cb_scientific = new AntdUI.Checkbox(); + this.flowPanel1 = new AntdUI.FlowPanel(); + this.ava_save = new AntdUI.Avatar(); + this.ava_zoom_out = new AntdUI.Avatar(); + this.ava__zoom_in = new AntdUI.Avatar(); + this.ava_auto = new AntdUI.Avatar(); + this.panel3 = new AntdUI.Panel(); + this.lb_size = new AntdUI.Label(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.image_pr = new AntdUI.Image3D(); + this.pl_panel_image = new AntdUI.Panel(); + this.pl_bg_panel = new AntdUI.Panel(); + this.image_pl = new AntdUI.Image3D(); + this.panel1.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.flowPanel1.SuspendLayout(); + this.panel3.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); + this.pl_panel_image.SuspendLayout(); + this.pl_bg_panel.SuspendLayout(); + this.SuspendLayout(); + // + // windowBar1 + // + this.windowBar1.BackColor = System.Drawing.SystemColors.ActiveCaptionText; + this.windowBar1.Dock = System.Windows.Forms.DockStyle.Top; + this.windowBar1.ForeColor = System.Drawing.SystemColors.ButtonFace; + this.windowBar1.IsMax = false; + this.windowBar1.Location = new System.Drawing.Point(3, 3); + this.windowBar1.Name = "windowBar1"; + this.windowBar1.ShowIcon = false; + this.windowBar1.Size = new System.Drawing.Size(352, 23); + this.windowBar1.TabIndex = 0; + this.windowBar1.Text = " "; + this.windowBar1.UseSystemStyleColor = true; + // + // panel1 + // + this.panel1.Controls.Add(this.tableLayoutPanel1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(3, 26); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(352, 23); + this.panel1.TabIndex = 1; + this.panel1.Text = "panel1"; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 4; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 131F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 69F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 125F)); + this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.cb_scientific, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.flowPanel1, 3, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 1; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(352, 23); + this.tableLayoutPanel1.TabIndex = 0; + // + // panel2 + // + this.panel2.Controls.Add(this.cbb_mode); + this.panel2.Controls.Add(this.label1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(0, 0); + this.panel2.Margin = new System.Windows.Forms.Padding(0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(131, 23); + this.panel2.TabIndex = 0; + this.panel2.Text = "panel2"; + // + // cbb_mode + // + this.cbb_mode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_mode.FormattingEnabled = true; + this.cbb_mode.Items.AddRange(new object[] { + "merge", + "mark", + "pseudocolor"}); + this.cbb_mode.Location = new System.Drawing.Point(45, 1); + this.cbb_mode.Name = "cbb_mode"; + this.cbb_mode.Size = new System.Drawing.Size(83, 20); + this.cbb_mode.TabIndex = 1; + // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.label1.Location = new System.Drawing.Point(3, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(36, 23); + this.label1.TabIndex = 0; + this.label1.Text = "模式:"; + // + // cb_scientific + // + this.cb_scientific.AutoCheck = true; + this.cb_scientific.Location = new System.Drawing.Point(134, 3); + this.cb_scientific.Name = "cb_scientific"; + this.cb_scientific.Size = new System.Drawing.Size(63, 17); + this.cb_scientific.TabIndex = 1; + this.cb_scientific.Text = "光子数"; + // + // flowPanel1 + // + this.flowPanel1.Controls.Add(this.ava_save); + this.flowPanel1.Controls.Add(this.ava_zoom_out); + this.flowPanel1.Controls.Add(this.ava__zoom_in); + this.flowPanel1.Controls.Add(this.ava_auto); + this.flowPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.flowPanel1.Location = new System.Drawing.Point(227, 0); + this.flowPanel1.Margin = new System.Windows.Forms.Padding(0); + this.flowPanel1.Name = "flowPanel1"; + this.flowPanel1.Size = new System.Drawing.Size(125, 23); + this.flowPanel1.TabIndex = 2; + this.flowPanel1.Text = "flowPanel1"; + // + // ava_save + // + this.ava_save.Cursor = System.Windows.Forms.Cursors.Hand; + this.ava_save.Image = global::PBAnaly.Properties.Resources.保存图片; + this.ava_save.ImageFit = AntdUI.TFit.Contain; + this.ava_save.Location = new System.Drawing.Point(96, 3); + this.ava_save.Name = "ava_save"; + this.ava_save.Size = new System.Drawing.Size(25, 17); + this.ava_save.TabIndex = 6; + this.ava_save.Text = "a"; + // + // ava_zoom_out + // + this.ava_zoom_out.Cursor = System.Windows.Forms.Cursors.Hand; + this.ava_zoom_out.Image = global::PBAnaly.Properties.Resources.缩小; + this.ava_zoom_out.ImageFit = AntdUI.TFit.Contain; + this.ava_zoom_out.Location = new System.Drawing.Point(65, 3); + this.ava_zoom_out.Name = "ava_zoom_out"; + this.ava_zoom_out.Size = new System.Drawing.Size(25, 17); + this.ava_zoom_out.TabIndex = 5; + this.ava_zoom_out.Text = "a"; + this.ava_zoom_out.Click += new System.EventHandler(this.ava_zoom_out_Click); + // + // ava__zoom_in + // + this.ava__zoom_in.Cursor = System.Windows.Forms.Cursors.Hand; + this.ava__zoom_in.Image = global::PBAnaly.Properties.Resources.放大; + this.ava__zoom_in.ImageFit = AntdUI.TFit.Contain; + this.ava__zoom_in.Location = new System.Drawing.Point(34, 3); + this.ava__zoom_in.Name = "ava__zoom_in"; + this.ava__zoom_in.Size = new System.Drawing.Size(25, 17); + this.ava__zoom_in.TabIndex = 4; + this.ava__zoom_in.Text = ""; + this.ava__zoom_in.Click += new System.EventHandler(this.ava__zoom_in_Click); + // + // ava_auto + // + this.ava_auto.Cursor = System.Windows.Forms.Cursors.Hand; + this.ava_auto.HandCursor = System.Windows.Forms.Cursors.IBeam; + this.ava_auto.Image = global::PBAnaly.Properties.Resources.全屏; + this.ava_auto.ImageFit = AntdUI.TFit.Contain; + this.ava_auto.Location = new System.Drawing.Point(3, 3); + this.ava_auto.Name = "ava_auto"; + this.ava_auto.Size = new System.Drawing.Size(25, 17); + this.ava_auto.TabIndex = 3; + this.ava_auto.Text = "a"; + this.ava_auto.Click += new System.EventHandler(this.ava_auto_Click); + // + // panel3 + // + this.panel3.Controls.Add(this.lb_size); + this.panel3.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel3.Location = new System.Drawing.Point(3, 292); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(352, 13); + this.panel3.TabIndex = 2; + this.panel3.Text = "panel3"; + // + // lb_size + // + this.lb_size.BackColor = System.Drawing.SystemColors.ControlLight; + this.lb_size.Dock = System.Windows.Forms.DockStyle.Fill; + this.lb_size.Location = new System.Drawing.Point(0, 0); + this.lb_size.Margin = new System.Windows.Forms.Padding(0, 0, 0, 0); + this.lb_size.Name = "lb_size"; + this.lb_size.Size = new System.Drawing.Size(352, 13); + this.lb_size.TabIndex = 0; + this.lb_size.Text = "800x600"; + this.lb_size.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.ColumnCount = 2; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 66F)); + this.tableLayoutPanel2.Controls.Add(this.image_pr, 1, 0); + this.tableLayoutPanel2.Controls.Add(this.pl_panel_image, 0, 0); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 49); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 1; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(352, 243); + this.tableLayoutPanel2.TabIndex = 3; + // + // image_pr + // + this.image_pr.Dock = System.Windows.Forms.DockStyle.Fill; + this.image_pr.Duration = 0; + this.image_pr.ImageFit = AntdUI.TFit.Fill; + this.image_pr.Location = new System.Drawing.Point(289, 3); + this.image_pr.Name = "image_pr"; + this.image_pr.Size = new System.Drawing.Size(60, 237); + this.image_pr.Speed = 1; + this.image_pr.TabIndex = 1; + this.image_pr.Text = "image3D1"; + // + // pl_panel_image + // + this.pl_panel_image.Back = System.Drawing.Color.FromArgb(((int)(((byte)(6)))), ((int)(((byte)(6)))), ((int)(((byte)(6))))); + this.pl_panel_image.Controls.Add(this.pl_bg_panel); + this.pl_panel_image.Dock = System.Windows.Forms.DockStyle.Fill; + this.pl_panel_image.Location = new System.Drawing.Point(3, 3); + this.pl_panel_image.Name = "pl_panel_image"; + this.pl_panel_image.Size = new System.Drawing.Size(280, 237); + this.pl_panel_image.TabIndex = 0; + this.pl_panel_image.Text = "panel4"; + // + // pl_bg_panel + // + this.pl_bg_panel.Controls.Add(this.image_pl); + this.pl_bg_panel.Location = new System.Drawing.Point(0, 0); + this.pl_bg_panel.Name = "pl_bg_panel"; + this.pl_bg_panel.Size = new System.Drawing.Size(223, 185); + this.pl_bg_panel.TabIndex = 0; + this.pl_bg_panel.Text = "panel4"; + // + // image_pl + // + this.image_pl.Dock = System.Windows.Forms.DockStyle.Fill; + this.image_pl.Duration = 0; + this.image_pl.ImageFit = AntdUI.TFit.Fill; + this.image_pl.Location = new System.Drawing.Point(0, 0); + this.image_pl.Name = "image_pl"; + this.image_pl.Size = new System.Drawing.Size(223, 185); + this.image_pl.Speed = 1; + this.image_pl.TabIndex = 0; + this.image_pl.Text = "image3D1"; + // + // BioanalyImagePanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(358, 308); + this.Controls.Add(this.tableLayoutPanel2); + this.Controls.Add(this.panel3); + this.Controls.Add(this.panel1); + this.Controls.Add(this.windowBar1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "BioanalyImagePanel"; + this.Padding = new System.Windows.Forms.Padding(3); + this.Text = "BioanalyImagePanel"; + this.MouseEnter += new System.EventHandler(this.BioanalyImagePanel_MouseEnter); + this.panel1.ResumeLayout(false); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.flowPanel1.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.tableLayoutPanel2.ResumeLayout(false); + this.pl_panel_image.ResumeLayout(false); + this.pl_bg_panel.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private AntdUI.WindowBar windowBar1; + private AntdUI.Panel panel1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private AntdUI.Panel panel2; + private AntdUI.Label label1; + private AntdUI.FlowPanel flowPanel1; + private AntdUI.Avatar ava_auto; + private AntdUI.Panel panel3; + private AntdUI.Label lb_size; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + public System.Windows.Forms.ComboBox cbb_mode; + private AntdUI.Image3D image_pr; + public AntdUI.Checkbox cb_scientific; + public AntdUI.Avatar ava_save; + public AntdUI.Avatar ava_zoom_out; + public AntdUI.Avatar ava__zoom_in; + public AntdUI.Panel pl_bg_panel; + public AntdUI.Image3D image_pl; + public AntdUI.Panel pl_panel_image; + } +} \ No newline at end of file diff --git a/src/PBAnaly/UI/BioanalyImagePanel.cs b/src/PBAnaly/UI/BioanalyImagePanel.cs new file mode 100644 index 0000000..69ce018 --- /dev/null +++ b/src/PBAnaly/UI/BioanalyImagePanel.cs @@ -0,0 +1,250 @@ +using PBAnaly.Module; +using SixLabors.ImageSharp; +using SixLabors.ImageSharp.PixelFormats; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace PBAnaly.UI +{ + public partial class BioanalyImagePanel : Form + { + + #region Key + private const int WM_NCHITTEST = 0x84; + private const int HTCLIENT = 0x1; + private const int HTCAPTION = 0x2; + private const int HTLEFT = 0x10; + private const int HTRIGHT = 0x11; + private const int HTTOP = 0x12; + private const int HTTOPLEFT = 0x13; + private const int HTTOPRIGHT = 0x14; + private const int HTBOTTOM = 0x15; + private const int HTBOTTOMLEFT = 0x16; + private const int HTBOTTOMRIGHT = 0x17; + #endregion + private const float ZoomMaxFactor = 2.0f; + private const float ZoomMinFactor = 1.2f; + private const float ZoomFactor = 1.2f; + private float currentZoom = 1.0f; + public BioanalyImagePanel() + { + InitializeComponent(); + this.FormBorderStyle = FormBorderStyle.None; + pl_bg_panel.Dock = DockStyle.None; + pl_bg_panel.Location = new System.Drawing.Point(pl_panel_image.Location.X, pl_panel_image.Location.Y); + pl_bg_panel.Width = pl_panel_image.Width; + pl_bg_panel.Height = pl_panel_image.Height; + CenterPictureBox(); + + image_pl.MouseWheel += Image_pl_MouseWheel; + } + + + + #region 对外方法 + public void SetButtomLabel(string value) + { + lb_size.Text = value; + } + + public void SetImage(Image image) + { + if (image_pl.InvokeRequired) + { + image_pl.Invoke(new MethodInvoker(() => + { + image_pl.Image = util.ConvertL16ToBitmap(image); + })); + + } + else + { + image_pl.Image = util.ConvertL16ToBitmap(image); + } + + + } + public void SetImage(Image image, Image colorbar) + { + if (image_pl.InvokeRequired) + { + image_pl.Invoke(new MethodInvoker(() => + { + image_pl.Image = util.ConvertL16ToBitmap(image); + image_pr.Image = util.ConvertRgb24ImageToBitmap(colorbar); + })); + + } + else + { + image_pl.Image = util.ConvertL16ToBitmap(image); + image_pr.Image = util.ConvertRgb24ImageToBitmap(colorbar); + } + + + } + public void SetImage(Image image) + { + if (image_pl.InvokeRequired) + { + image_pl.Invoke(new MethodInvoker(() => + { + image_pl.Image = util.ConvertRgb24ImageToBitmap(image); + })); + + } + else + { + image_pl.Image = util.ConvertRgb24ImageToBitmap(image); + } + + } + public void SetImage(Image image, Image colorbar) + { + if (image_pl.InvokeRequired) + { + image_pl.Invoke(new MethodInvoker(() => + { + image_pl.Image = util.ConvertRgb24ImageToBitmap(image); + image_pr.Image = util.ConvertRgb24ImageToBitmap(colorbar); + })); + + } + else + { + image_pl.Image = util.ConvertRgb24ImageToBitmap(image); + image_pr.Image = util.ConvertRgb24ImageToBitmap(colorbar); + } + + } + + public bool IsImageLargerThanPanel() + { + return pl_bg_panel.Width > pl_panel_image.ClientSize.Width || pl_bg_panel.Height > pl_panel_image.ClientSize.Height; + } + + #endregion + #region WndProc + protected override void WndProc(ref Message m) + { + switch (m.Msg) + { + case WM_NCHITTEST: + base.WndProc(ref m); + System.Drawing.Point pos = this.PointToClient(new System.Drawing.Point(m.LParam.ToInt32() & 0xFFFF, m.LParam.ToInt32() >> 16)); + + + if (pos.X < 10) + { + if (pos.Y < 10) m.Result = (IntPtr)HTTOPLEFT; + else if (pos.Y > this.ClientSize.Height - 10) m.Result = (IntPtr)HTBOTTOMLEFT; + else m.Result = (IntPtr)HTLEFT; + } + else if (pos.X > this.ClientSize.Width - 10) + { + if (pos.Y < 10) m.Result = (IntPtr)HTTOPRIGHT; + else if (pos.Y > this.ClientSize.Height - 10) m.Result = (IntPtr)HTBOTTOMRIGHT; + else m.Result = (IntPtr)HTRIGHT; + } + else if (pos.Y < 10) + { + m.Result = (IntPtr)HTTOP; + } + else if (pos.Y > this.ClientSize.Height - 10) + { + m.Result = (IntPtr)HTBOTTOM; + } + break; + default: + base.WndProc(ref m); + break; + } + } + #endregion + + #region 事件 + private void ava_auto_Click(object sender, EventArgs e) + { + + pl_bg_panel.Location = new System.Drawing.Point(pl_panel_image.Location.X, pl_panel_image.Location.Y); + pl_bg_panel.Width = pl_panel_image.Width; + pl_bg_panel.Height = pl_panel_image.Height; + CenterPictureBox(); + } + private void ava__zoom_in_Click(object sender, EventArgs e) + { + ZoomPictureBox(ZoomFactor); + } + private void ava_zoom_out_Click(object sender, EventArgs e) + { + ZoomPictureBox(1 / ZoomFactor); + } + private void Image_pl_MouseWheel(object sender, MouseEventArgs e) + { + if (e.Delta > 0) + { + // 滚轮向上,放大图片 + ZoomPictureBox(ZoomFactor); + } + else if (e.Delta < 0) + { + + ZoomPictureBox(1 / ZoomFactor); + } + } + #endregion + + #region 方法 + public void CenterPictureBox() + { + // 设置 pl_bg_image 的位置,使其在 pl_image 中居中 + pl_bg_panel.Left = (pl_panel_image.ClientSize.Width - pl_bg_panel.Width) / 2; + pl_bg_panel.Top = (pl_panel_image.ClientSize.Height - pl_bg_panel.Height) / 2; + + + + //// 防止图片超过panel的边界 + if (pl_bg_panel.Left < 0) pl_bg_panel.Left = 0; + if (pl_bg_panel.Top < 0) pl_bg_panel.Top = 0; + } + private void ZoomPictureBox(float factor) + { + + currentZoom *= factor; + int w = (int)(pl_bg_panel.Width * factor); + int h = (int)(pl_bg_panel.Height * factor); + if (w < pl_panel_image.Width || h < pl_panel_image.Height) + { + w = pl_panel_image.Width; + h = pl_panel_image.Height; + } + + if (w > pl_panel_image.Width * 5 || h > pl_panel_image.Height * 5) + { + w = pl_panel_image.Width * 5; + h = pl_panel_image.Height * 5; + } + // 按照缩放比例调整pl_bg_image的宽度和高度 + pl_bg_panel.Width = w; + pl_bg_panel.Height = h; + // 调用方法使PB_image在pl_image中居中 + CenterPictureBox(); + } + + + #endregion + + private void BioanalyImagePanel_MouseEnter(object sender, EventArgs e) + { + + } + } +} diff --git a/src/PBAnaly/UI/BioanalyImagePanel.resx b/src/PBAnaly/UI/BioanalyImagePanel.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/src/PBAnaly/UI/BioanalyImagePanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/PBAnaly/UI/BioanayImagePaletteForm.Designer.cs b/src/PBAnaly/UI/BioanayImagePaletteForm.Designer.cs new file mode 100644 index 0000000..505d75a --- /dev/null +++ b/src/PBAnaly/UI/BioanayImagePaletteForm.Designer.cs @@ -0,0 +1,743 @@ +namespace PBAnaly.UI +{ + partial class BioanayImagePaletteForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.fb_fixSetting = new ReaLTaiizor.Controls.FoxButton(); + this.foxLabel7 = new ReaLTaiizor.Controls.FoxLabel(); + this.ftb_h = new ReaLTaiizor.Controls.FoxTextBox(); + this.foxLabel5 = new ReaLTaiizor.Controls.FoxLabel(); + this.ftb_w = new ReaLTaiizor.Controls.FoxTextBox(); + this.foxLabel8 = new ReaLTaiizor.Controls.FoxLabel(); + this.flb_act_mm = new ReaLTaiizor.Controls.FoxLabel(); + this.foxLabel9 = new ReaLTaiizor.Controls.FoxLabel(); + this.foxLabel6 = new ReaLTaiizor.Controls.FoxLabel(); + this.foxLabel2 = new ReaLTaiizor.Controls.FoxLabel(); + this.foxLabel3 = new ReaLTaiizor.Controls.FoxLabel(); + this.foxLabel1 = new ReaLTaiizor.Controls.FoxLabel(); + this.foxLabel4 = new ReaLTaiizor.Controls.FoxLabel(); + this.hpb_line = new ReaLTaiizor.Controls.HopePictureBox(); + this.hpb_wand = new ReaLTaiizor.Controls.HopePictureBox(); + this.hpb_xianduan = new ReaLTaiizor.Controls.HopePictureBox(); + this.ftb_r = new ReaLTaiizor.Controls.FoxTextBox(); + this.hpb_rect = new ReaLTaiizor.Controls.HopePictureBox(); + this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); + this.hpb_circe = new ReaLTaiizor.Controls.HopePictureBox(); + this.panel2 = new AntdUI.Panel(); + this.collapseItem2 = new AntdUI.CollapseItem(); + this.cb_colortable = new System.Windows.Forms.ComboBox(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.nud_brightness = new System.Windows.Forms.NumericUpDown(); + this.dtb_colorMax = new ReaLTaiizor.Controls.DungeonTrackBar(); + this.dtb_colorMin = new ReaLTaiizor.Controls.DungeonTrackBar(); + this.dtb_opacity = new ReaLTaiizor.Controls.DungeonTrackBar(); + this.pb_bgimage = new System.Windows.Forms.PictureBox(); + this.dtb_brightness = new ReaLTaiizor.Controls.DungeonTrackBar(); + this.panel1 = new AntdUI.Panel(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.collapseItem1 = new AntdUI.CollapseItem(); + this.cll_panel = new AntdUI.Collapse(); + this.collapseItem3 = new AntdUI.CollapseItem(); + this.nud_opacity = new System.Windows.Forms.NumericUpDown(); + this.nud_colorMin = new System.Windows.Forms.NumericUpDown(); + this.nud_colorMax = new System.Windows.Forms.NumericUpDown(); + ((System.ComponentModel.ISupportInitialize)(this.hpb_line)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.hpb_wand)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.hpb_xianduan)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.hpb_rect)).BeginInit(); + this.tableLayoutPanel3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.hpb_circe)).BeginInit(); + this.panel2.SuspendLayout(); + this.collapseItem2.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nud_brightness)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pb_bgimage)).BeginInit(); + this.panel1.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.collapseItem1.SuspendLayout(); + this.cll_panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nud_opacity)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nud_colorMin)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nud_colorMax)).BeginInit(); + this.SuspendLayout(); + // + // fb_fixSetting + // + this.fb_fixSetting.BackColor = System.Drawing.Color.Transparent; + this.fb_fixSetting.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(249)))), ((int)(((byte)(249)))), ((int)(((byte)(249))))); + this.fb_fixSetting.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(193)))), ((int)(((byte)(193)))), ((int)(((byte)(193))))); + this.fb_fixSetting.Cursor = System.Windows.Forms.Cursors.Hand; + this.fb_fixSetting.DisabledBaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(249)))), ((int)(((byte)(249)))), ((int)(((byte)(249))))); + this.fb_fixSetting.DisabledBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(209)))), ((int)(((byte)(209)))), ((int)(((byte)(209))))); + this.fb_fixSetting.DisabledTextColor = System.Drawing.Color.FromArgb(((int)(((byte)(166)))), ((int)(((byte)(178)))), ((int)(((byte)(190))))); + this.fb_fixSetting.DownColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232))))); + this.fb_fixSetting.EnabledCalc = true; + this.fb_fixSetting.Font = new System.Drawing.Font("Segoe UI", 10F); + this.fb_fixSetting.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(66)))), ((int)(((byte)(78)))), ((int)(((byte)(90))))); + this.fb_fixSetting.Location = new System.Drawing.Point(120, 30); + this.fb_fixSetting.Name = "fb_fixSetting"; + this.fb_fixSetting.OverColor = System.Drawing.Color.FromArgb(((int)(((byte)(242)))), ((int)(((byte)(242)))), ((int)(((byte)(242))))); + this.fb_fixSetting.Size = new System.Drawing.Size(59, 31); + this.fb_fixSetting.TabIndex = 6; + this.fb_fixSetting.Text = "修改"; + this.fb_fixSetting.Visible = false; + // + // foxLabel7 + // + this.foxLabel7.BackColor = System.Drawing.Color.Transparent; + this.foxLabel7.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Bold); + this.foxLabel7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100))))); + this.foxLabel7.Location = new System.Drawing.Point(120, 5); + this.foxLabel7.Name = "foxLabel7"; + this.foxLabel7.Size = new System.Drawing.Size(26, 19); + this.foxLabel7.TabIndex = 4; + this.foxLabel7.Text = "r="; + // + // ftb_h + // + this.ftb_h.BackColor = System.Drawing.Color.Transparent; + this.ftb_h.Cursor = System.Windows.Forms.Cursors.Hand; + this.ftb_h.EnabledCalc = true; + this.ftb_h.Font = new System.Drawing.Font("Segoe UI", 10F); + this.ftb_h.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(66)))), ((int)(((byte)(78)))), ((int)(((byte)(90))))); + this.ftb_h.Location = new System.Drawing.Point(34, 28); + this.ftb_h.MaxLength = 32767; + this.ftb_h.MultiLine = false; + this.ftb_h.Name = "ftb_h"; + this.ftb_h.ReadOnly = false; + this.ftb_h.Size = new System.Drawing.Size(75, 22); + this.ftb_h.TabIndex = 3; + this.ftb_h.Text = "20"; + this.ftb_h.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.ftb_h.UseSystemPasswordChar = false; + // + // foxLabel5 + // + this.foxLabel5.BackColor = System.Drawing.Color.Transparent; + this.foxLabel5.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Bold); + this.foxLabel5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100))))); + this.foxLabel5.Location = new System.Drawing.Point(3, 31); + this.foxLabel5.Name = "foxLabel5"; + this.foxLabel5.Size = new System.Drawing.Size(26, 19); + this.foxLabel5.TabIndex = 2; + this.foxLabel5.Text = "h="; + // + // ftb_w + // + this.ftb_w.BackColor = System.Drawing.Color.Transparent; + this.ftb_w.Cursor = System.Windows.Forms.Cursors.Hand; + this.ftb_w.EnabledCalc = true; + this.ftb_w.Font = new System.Drawing.Font("Segoe UI", 10F); + this.ftb_w.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(66)))), ((int)(((byte)(78)))), ((int)(((byte)(90))))); + this.ftb_w.Location = new System.Drawing.Point(34, 0); + this.ftb_w.MaxLength = 32767; + this.ftb_w.MultiLine = false; + this.ftb_w.Name = "ftb_w"; + this.ftb_w.ReadOnly = false; + this.ftb_w.Size = new System.Drawing.Size(75, 22); + this.ftb_w.TabIndex = 1; + this.ftb_w.Text = "20"; + this.ftb_w.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.ftb_w.UseSystemPasswordChar = false; + // + // foxLabel8 + // + this.foxLabel8.BackColor = System.Drawing.Color.Transparent; + this.tableLayoutPanel2.SetColumnSpan(this.foxLabel8, 4); + this.foxLabel8.Dock = System.Windows.Forms.DockStyle.Fill; + this.foxLabel8.Font = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.foxLabel8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100))))); + this.foxLabel8.Location = new System.Drawing.Point(3, 166); + this.foxLabel8.Name = "foxLabel8"; + this.foxLabel8.Size = new System.Drawing.Size(204, 18); + this.foxLabel8.TabIndex = 34; + this.foxLabel8.Text = "Color Rable"; + // + // flb_act_mm + // + this.flb_act_mm.BackColor = System.Drawing.Color.Transparent; + this.flb_act_mm.Dock = System.Windows.Forms.DockStyle.Fill; + this.flb_act_mm.Font = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.flb_act_mm.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100))))); + this.flb_act_mm.Location = new System.Drawing.Point(93, 137); + this.flb_act_mm.Name = "flb_act_mm"; + this.flb_act_mm.Size = new System.Drawing.Size(114, 23); + this.flb_act_mm.TabIndex = 30; + this.flb_act_mm.Text = "0 mm"; + // + // foxLabel9 + // + this.foxLabel9.BackColor = System.Drawing.Color.Transparent; + this.foxLabel9.Dock = System.Windows.Forms.DockStyle.Fill; + this.foxLabel9.Font = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.foxLabel9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100))))); + this.foxLabel9.Location = new System.Drawing.Point(3, 108); + this.foxLabel9.Name = "foxLabel9"; + this.foxLabel9.Size = new System.Drawing.Size(44, 23); + this.foxLabel9.TabIndex = 18; + this.foxLabel9.Text = "Max"; + // + // foxLabel6 + // + this.foxLabel6.BackColor = System.Drawing.Color.Transparent; + this.foxLabel6.Dock = System.Windows.Forms.DockStyle.Fill; + this.foxLabel6.Font = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.foxLabel6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100))))); + this.foxLabel6.Location = new System.Drawing.Point(3, 79); + this.foxLabel6.Name = "foxLabel6"; + this.foxLabel6.Size = new System.Drawing.Size(44, 23); + this.foxLabel6.TabIndex = 13; + this.foxLabel6.Text = "Min"; + // + // foxLabel2 + // + this.foxLabel2.BackColor = System.Drawing.Color.Transparent; + this.foxLabel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.foxLabel2.Font = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.foxLabel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100))))); + this.foxLabel2.Location = new System.Drawing.Point(3, 61); + this.foxLabel2.Name = "foxLabel2"; + this.foxLabel2.Size = new System.Drawing.Size(44, 12); + this.foxLabel2.TabIndex = 10; + this.foxLabel2.Text = "色阶"; + // + // foxLabel3 + // + this.foxLabel3.BackColor = System.Drawing.Color.Transparent; + this.foxLabel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.foxLabel3.Font = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.foxLabel3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100))))); + this.foxLabel3.Location = new System.Drawing.Point(3, 32); + this.foxLabel3.Name = "foxLabel3"; + this.foxLabel3.Size = new System.Drawing.Size(44, 23); + this.foxLabel3.TabIndex = 6; + this.foxLabel3.Text = "透明度::"; + // + // foxLabel1 + // + this.foxLabel1.BackColor = System.Drawing.Color.Transparent; + this.foxLabel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.foxLabel1.Font = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.foxLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100))))); + this.foxLabel1.Location = new System.Drawing.Point(3, 3); + this.foxLabel1.Name = "foxLabel1"; + this.foxLabel1.Size = new System.Drawing.Size(44, 23); + this.foxLabel1.TabIndex = 1; + this.foxLabel1.Text = "亮度:"; + // + // foxLabel4 + // + this.foxLabel4.BackColor = System.Drawing.Color.Transparent; + this.foxLabel4.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Bold); + this.foxLabel4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100))))); + this.foxLabel4.Location = new System.Drawing.Point(3, 3); + this.foxLabel4.Name = "foxLabel4"; + this.foxLabel4.Size = new System.Drawing.Size(26, 19); + this.foxLabel4.TabIndex = 0; + this.foxLabel4.Text = "w="; + // + // hpb_line + // + this.hpb_line.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(196)))), ((int)(((byte)(204))))); + this.hpb_line.Dock = System.Windows.Forms.DockStyle.Fill; + this.hpb_line.Image = global::PBAnaly.Properties.Resources.线段; + this.hpb_line.Location = new System.Drawing.Point(3, 137); + this.hpb_line.Name = "hpb_line"; + this.hpb_line.PixelOffsetType = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; + this.hpb_line.Size = new System.Drawing.Size(44, 23); + this.hpb_line.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.hpb_line.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality; + this.hpb_line.TabIndex = 9; + this.hpb_line.TabStop = false; + this.hpb_line.TextRenderingType = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit; + // + // hpb_wand + // + this.hpb_wand.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(196)))), ((int)(((byte)(204))))); + this.hpb_wand.Image = global::PBAnaly.Properties.Resources.魔术棒_魔法_魔术_一键; + this.hpb_wand.Location = new System.Drawing.Point(105, 3); + this.hpb_wand.Name = "hpb_wand"; + this.hpb_wand.PixelOffsetType = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; + this.hpb_wand.Size = new System.Drawing.Size(28, 27); + this.hpb_wand.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.hpb_wand.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality; + this.hpb_wand.TabIndex = 13; + this.hpb_wand.TabStop = false; + this.hpb_wand.TextRenderingType = System.Drawing.Text.TextRenderingHint.SystemDefault; + // + // hpb_xianduan + // + this.hpb_xianduan.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(196)))), ((int)(((byte)(204))))); + this.hpb_xianduan.Image = global::PBAnaly.Properties.Resources.线段__1_; + this.hpb_xianduan.Location = new System.Drawing.Point(71, 3); + this.hpb_xianduan.Name = "hpb_xianduan"; + this.hpb_xianduan.PixelOffsetType = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; + this.hpb_xianduan.Size = new System.Drawing.Size(28, 27); + this.hpb_xianduan.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.hpb_xianduan.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality; + this.hpb_xianduan.TabIndex = 12; + this.hpb_xianduan.TabStop = false; + this.hpb_xianduan.TextRenderingType = System.Drawing.Text.TextRenderingHint.SystemDefault; + // + // ftb_r + // + this.ftb_r.BackColor = System.Drawing.Color.Transparent; + this.ftb_r.Cursor = System.Windows.Forms.Cursors.Hand; + this.ftb_r.EnabledCalc = true; + this.ftb_r.Font = new System.Drawing.Font("Segoe UI", 10F); + this.ftb_r.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(66)))), ((int)(((byte)(78)))), ((int)(((byte)(90))))); + this.ftb_r.Location = new System.Drawing.Point(151, 2); + this.ftb_r.MaxLength = 32767; + this.ftb_r.MultiLine = false; + this.ftb_r.Name = "ftb_r"; + this.ftb_r.ReadOnly = false; + this.ftb_r.Size = new System.Drawing.Size(75, 22); + this.ftb_r.TabIndex = 5; + this.ftb_r.Text = "10"; + this.ftb_r.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.ftb_r.UseSystemPasswordChar = false; + // + // hpb_rect + // + this.hpb_rect.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(196)))), ((int)(((byte)(204))))); + this.hpb_rect.Dock = System.Windows.Forms.DockStyle.Fill; + this.hpb_rect.Image = global::PBAnaly.Properties.Resources._10矩形; + this.hpb_rect.Location = new System.Drawing.Point(2, 2); + this.hpb_rect.Margin = new System.Windows.Forms.Padding(2); + this.hpb_rect.Name = "hpb_rect"; + this.hpb_rect.PixelOffsetType = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; + this.hpb_rect.Size = new System.Drawing.Size(30, 30); + this.hpb_rect.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.hpb_rect.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality; + this.hpb_rect.TabIndex = 10; + this.hpb_rect.TabStop = false; + this.hpb_rect.TextRenderingType = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit; + // + // tableLayoutPanel3 + // + this.tableLayoutPanel3.ColumnCount = 5; + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 34F)); + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 34F)); + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 34F)); + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 34F)); + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel3.Controls.Add(this.hpb_wand, 3, 0); + this.tableLayoutPanel3.Controls.Add(this.hpb_xianduan, 2, 0); + this.tableLayoutPanel3.Controls.Add(this.hpb_circe, 1, 0); + this.tableLayoutPanel3.Controls.Add(this.hpb_rect, 0, 0); + this.tableLayoutPanel3.Controls.Add(this.panel2, 0, 1); + this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel3.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel3.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel3.Name = "tableLayoutPanel3"; + this.tableLayoutPanel3.RowCount = 2; + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 34F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel3.Size = new System.Drawing.Size(268, 113); + this.tableLayoutPanel3.TabIndex = 0; + // + // hpb_circe + // + this.hpb_circe.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(196)))), ((int)(((byte)(204))))); + this.hpb_circe.Image = global::PBAnaly.Properties.Resources.圆形1; + this.hpb_circe.Location = new System.Drawing.Point(37, 3); + this.hpb_circe.Name = "hpb_circe"; + this.hpb_circe.PixelOffsetType = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; + this.hpb_circe.Size = new System.Drawing.Size(28, 27); + this.hpb_circe.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.hpb_circe.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality; + this.hpb_circe.TabIndex = 11; + this.hpb_circe.TabStop = false; + this.hpb_circe.TextRenderingType = System.Drawing.Text.TextRenderingHint.SystemDefault; + // + // panel2 + // + this.tableLayoutPanel3.SetColumnSpan(this.panel2, 5); + this.panel2.Controls.Add(this.fb_fixSetting); + this.panel2.Controls.Add(this.ftb_r); + this.panel2.Controls.Add(this.foxLabel7); + this.panel2.Controls.Add(this.ftb_h); + this.panel2.Controls.Add(this.foxLabel5); + this.panel2.Controls.Add(this.ftb_w); + this.panel2.Controls.Add(this.foxLabel4); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(3, 37); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(262, 73); + this.panel2.TabIndex = 14; + this.panel2.Text = "panel2"; + // + // collapseItem2 + // + this.collapseItem2.Controls.Add(this.tableLayoutPanel3); + this.collapseItem2.Location = new System.Drawing.Point(-268, -113); + this.collapseItem2.Name = "collapseItem2"; + this.collapseItem2.Size = new System.Drawing.Size(268, 113); + this.collapseItem2.TabIndex = 1; + this.collapseItem2.Text = "ROI工具"; + // + // cb_colortable + // + this.tableLayoutPanel2.SetColumnSpan(this.cb_colortable, 3); + this.cb_colortable.Dock = System.Windows.Forms.DockStyle.Fill; + this.cb_colortable.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_colortable.FormattingEnabled = true; + this.cb_colortable.Items.AddRange(new object[] { + "YellowHot", + "Black_Red", + "Black_Green", + "Black_Blue", + "Black_Yley", + "RGB", + "Pseudo", + "Gray"}); + this.cb_colortable.Location = new System.Drawing.Point(3, 190); + this.cb_colortable.Name = "cb_colortable"; + this.cb_colortable.Size = new System.Drawing.Size(84, 20); + this.cb_colortable.TabIndex = 35; + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.ColumnCount = 5; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel2.Controls.Add(this.nud_colorMax, 4, 4); + this.tableLayoutPanel2.Controls.Add(this.nud_colorMin, 4, 3); + this.tableLayoutPanel2.Controls.Add(this.nud_opacity, 4, 1); + this.tableLayoutPanel2.Controls.Add(this.nud_brightness, 4, 0); + this.tableLayoutPanel2.Controls.Add(this.dtb_colorMax, 1, 4); + this.tableLayoutPanel2.Controls.Add(this.dtb_colorMin, 1, 3); + this.tableLayoutPanel2.Controls.Add(this.dtb_opacity, 1, 1); + this.tableLayoutPanel2.Controls.Add(this.foxLabel8, 0, 6); + this.tableLayoutPanel2.Controls.Add(this.flb_act_mm, 3, 5); + this.tableLayoutPanel2.Controls.Add(this.foxLabel9, 0, 4); + this.tableLayoutPanel2.Controls.Add(this.foxLabel6, 0, 3); + this.tableLayoutPanel2.Controls.Add(this.foxLabel2, 0, 2); + this.tableLayoutPanel2.Controls.Add(this.foxLabel3, 0, 1); + this.tableLayoutPanel2.Controls.Add(this.foxLabel1, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.hpb_line, 0, 5); + this.tableLayoutPanel2.Controls.Add(this.cb_colortable, 0, 7); + this.tableLayoutPanel2.Controls.Add(this.pb_bgimage, 3, 7); + this.tableLayoutPanel2.Controls.Add(this.dtb_brightness, 1, 0); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 9; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 18F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 24F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(260, 272); + this.tableLayoutPanel2.TabIndex = 0; + // + // nud_brightness + // + this.nud_brightness.Dock = System.Windows.Forms.DockStyle.Fill; + this.nud_brightness.Location = new System.Drawing.Point(213, 3); + this.nud_brightness.Name = "nud_brightness"; + this.nud_brightness.Size = new System.Drawing.Size(44, 21); + this.nud_brightness.TabIndex = 44; + // + // dtb_colorMax + // + this.dtb_colorMax.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.tableLayoutPanel2.SetColumnSpan(this.dtb_colorMax, 3); + this.dtb_colorMax.Cursor = System.Windows.Forms.Cursors.Hand; + this.dtb_colorMax.Dock = System.Windows.Forms.DockStyle.Fill; + this.dtb_colorMax.DrawValueString = false; + this.dtb_colorMax.EmptyBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(221)))), ((int)(((byte)(221)))), ((int)(((byte)(221))))); + this.dtb_colorMax.FillBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(217)))), ((int)(((byte)(99)))), ((int)(((byte)(50))))); + this.dtb_colorMax.JumpToMouse = false; + this.dtb_colorMax.Location = new System.Drawing.Point(52, 107); + this.dtb_colorMax.Margin = new System.Windows.Forms.Padding(2); + this.dtb_colorMax.Maximum = 100; + this.dtb_colorMax.Minimum = 0; + this.dtb_colorMax.MinimumSize = new System.Drawing.Size(35, 18); + this.dtb_colorMax.Name = "dtb_colorMax"; + this.dtb_colorMax.Size = new System.Drawing.Size(156, 22); + this.dtb_colorMax.TabIndex = 40; + this.dtb_colorMax.Text = "dungeonTrackBar5"; + this.dtb_colorMax.ThumbBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); + this.dtb_colorMax.ThumbBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180))))); + this.dtb_colorMax.Value = 0; + this.dtb_colorMax.ValueDivison = ReaLTaiizor.Controls.DungeonTrackBar.ValueDivisor.By1; + this.dtb_colorMax.ValueToSet = 0F; + // + // dtb_colorMin + // + this.dtb_colorMin.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.tableLayoutPanel2.SetColumnSpan(this.dtb_colorMin, 3); + this.dtb_colorMin.Cursor = System.Windows.Forms.Cursors.Hand; + this.dtb_colorMin.Dock = System.Windows.Forms.DockStyle.Fill; + this.dtb_colorMin.DrawValueString = false; + this.dtb_colorMin.EmptyBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(221)))), ((int)(((byte)(221)))), ((int)(((byte)(221))))); + this.dtb_colorMin.FillBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(217)))), ((int)(((byte)(99)))), ((int)(((byte)(50))))); + this.dtb_colorMin.JumpToMouse = false; + this.dtb_colorMin.Location = new System.Drawing.Point(52, 78); + this.dtb_colorMin.Margin = new System.Windows.Forms.Padding(2); + this.dtb_colorMin.Maximum = 100; + this.dtb_colorMin.Minimum = 0; + this.dtb_colorMin.MinimumSize = new System.Drawing.Size(35, 18); + this.dtb_colorMin.Name = "dtb_colorMin"; + this.dtb_colorMin.Size = new System.Drawing.Size(156, 22); + this.dtb_colorMin.TabIndex = 39; + this.dtb_colorMin.Text = "dungeonTrackBar4"; + this.dtb_colorMin.ThumbBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); + this.dtb_colorMin.ThumbBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180))))); + this.dtb_colorMin.Value = 0; + this.dtb_colorMin.ValueDivison = ReaLTaiizor.Controls.DungeonTrackBar.ValueDivisor.By1; + this.dtb_colorMin.ValueToSet = 0F; + // + // dtb_opacity + // + this.dtb_opacity.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.tableLayoutPanel2.SetColumnSpan(this.dtb_opacity, 3); + this.dtb_opacity.Cursor = System.Windows.Forms.Cursors.Hand; + this.dtb_opacity.Dock = System.Windows.Forms.DockStyle.Fill; + this.dtb_opacity.DrawValueString = false; + this.dtb_opacity.EmptyBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(221)))), ((int)(((byte)(221)))), ((int)(((byte)(221))))); + this.dtb_opacity.FillBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(217)))), ((int)(((byte)(99)))), ((int)(((byte)(50))))); + this.dtb_opacity.JumpToMouse = false; + this.dtb_opacity.Location = new System.Drawing.Point(52, 31); + this.dtb_opacity.Margin = new System.Windows.Forms.Padding(2); + this.dtb_opacity.Maximum = 100; + this.dtb_opacity.Minimum = 0; + this.dtb_opacity.MinimumSize = new System.Drawing.Size(35, 18); + this.dtb_opacity.Name = "dtb_opacity"; + this.dtb_opacity.Size = new System.Drawing.Size(156, 22); + this.dtb_opacity.TabIndex = 37; + this.dtb_opacity.Text = "dungeonTrackBar2"; + this.dtb_opacity.ThumbBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); + this.dtb_opacity.ThumbBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180))))); + this.dtb_opacity.Value = 0; + this.dtb_opacity.ValueDivison = ReaLTaiizor.Controls.DungeonTrackBar.ValueDivisor.By1; + this.dtb_opacity.ValueToSet = 0F; + // + // pb_bgimage + // + this.pb_bgimage.Dock = System.Windows.Forms.DockStyle.Fill; + this.pb_bgimage.Location = new System.Drawing.Point(90, 187); + this.pb_bgimage.Margin = new System.Windows.Forms.Padding(0); + this.pb_bgimage.Name = "pb_bgimage"; + this.pb_bgimage.Size = new System.Drawing.Size(120, 29); + this.pb_bgimage.TabIndex = 36; + this.pb_bgimage.TabStop = false; + // + // dtb_brightness + // + this.dtb_brightness.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.tableLayoutPanel2.SetColumnSpan(this.dtb_brightness, 3); + this.dtb_brightness.Cursor = System.Windows.Forms.Cursors.Hand; + this.dtb_brightness.Dock = System.Windows.Forms.DockStyle.Fill; + this.dtb_brightness.DrawValueString = false; + this.dtb_brightness.EmptyBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(221)))), ((int)(((byte)(221)))), ((int)(((byte)(221))))); + this.dtb_brightness.FillBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(217)))), ((int)(((byte)(99)))), ((int)(((byte)(50))))); + this.dtb_brightness.JumpToMouse = false; + this.dtb_brightness.Location = new System.Drawing.Point(52, 2); + this.dtb_brightness.Margin = new System.Windows.Forms.Padding(2); + this.dtb_brightness.Maximum = 100; + this.dtb_brightness.Minimum = 0; + this.dtb_brightness.MinimumSize = new System.Drawing.Size(35, 18); + this.dtb_brightness.Name = "dtb_brightness"; + this.dtb_brightness.Size = new System.Drawing.Size(156, 22); + this.dtb_brightness.TabIndex = 2; + this.dtb_brightness.Text = "dungeonTrackBar1"; + this.dtb_brightness.ThumbBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); + this.dtb_brightness.ThumbBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180))))); + this.dtb_brightness.Value = 0; + this.dtb_brightness.ValueDivison = ReaLTaiizor.Controls.DungeonTrackBar.ValueDivisor.By1; + this.dtb_brightness.ValueToSet = 0F; + // + // panel1 + // + this.panel1.Controls.Add(this.tableLayoutPanel2); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(3, 3); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(260, 272); + this.panel1.TabIndex = 0; + this.panel1.Text = "panel1"; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 3; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 278F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 6F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(266, 302); + this.tableLayoutPanel1.TabIndex = 0; + // + // collapseItem1 + // + this.collapseItem1.Controls.Add(this.tableLayoutPanel1); + this.collapseItem1.Expand = true; + this.collapseItem1.Location = new System.Drawing.Point(19, 59); + this.collapseItem1.Name = "collapseItem1"; + this.collapseItem1.Size = new System.Drawing.Size(266, 302); + this.collapseItem1.TabIndex = 0; + this.collapseItem1.Text = "图像调整"; + // + // cll_panel + // + this.cll_panel.Cursor = System.Windows.Forms.Cursors.Hand; + this.cll_panel.Dock = System.Windows.Forms.DockStyle.Fill; + this.cll_panel.HeaderBg = System.Drawing.Color.FromArgb(((int)(((byte)(186)))), ((int)(((byte)(179)))), ((int)(((byte)(179))))); + this.cll_panel.Items.Add(this.collapseItem1); + this.cll_panel.Items.Add(this.collapseItem2); + this.cll_panel.Items.Add(this.collapseItem3); + this.cll_panel.Location = new System.Drawing.Point(0, 0); + this.cll_panel.Name = "cll_panel"; + this.cll_panel.Size = new System.Drawing.Size(304, 495); + this.cll_panel.TabIndex = 1; + this.cll_panel.Text = "fed"; + // + // collapseItem3 + // + this.collapseItem3.Expand = true; + this.collapseItem3.Location = new System.Drawing.Point(19, 473); + this.collapseItem3.Margin = new System.Windows.Forms.Padding(2); + this.collapseItem3.Name = "collapseItem3"; + this.collapseItem3.Size = new System.Drawing.Size(266, 154); + this.collapseItem3.TabIndex = 3; + this.collapseItem3.Text = "collapseItem3"; + // + // nud_opacity + // + this.nud_opacity.Dock = System.Windows.Forms.DockStyle.Fill; + this.nud_opacity.Location = new System.Drawing.Point(213, 32); + this.nud_opacity.Name = "nud_opacity"; + this.nud_opacity.Size = new System.Drawing.Size(44, 21); + this.nud_opacity.TabIndex = 45; + // + // nud_colorMin + // + this.nud_colorMin.Dock = System.Windows.Forms.DockStyle.Fill; + this.nud_colorMin.Location = new System.Drawing.Point(213, 79); + this.nud_colorMin.Name = "nud_colorMin"; + this.nud_colorMin.Size = new System.Drawing.Size(44, 21); + this.nud_colorMin.TabIndex = 50; + // + // nud_colorMax + // + this.nud_colorMax.Dock = System.Windows.Forms.DockStyle.Fill; + this.nud_colorMax.Location = new System.Drawing.Point(213, 108); + this.nud_colorMax.Name = "nud_colorMax"; + this.nud_colorMax.Size = new System.Drawing.Size(44, 21); + this.nud_colorMax.TabIndex = 51; + // + // BioanayImagePaletteForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(304, 495); + this.Controls.Add(this.cll_panel); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Margin = new System.Windows.Forms.Padding(2); + this.Name = "BioanayImagePaletteForm"; + this.Text = "BioanayImagePaletteForm"; + ((System.ComponentModel.ISupportInitialize)(this.hpb_line)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.hpb_wand)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.hpb_xianduan)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.hpb_rect)).EndInit(); + this.tableLayoutPanel3.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.hpb_circe)).EndInit(); + this.panel2.ResumeLayout(false); + this.collapseItem2.ResumeLayout(false); + this.tableLayoutPanel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.nud_brightness)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pb_bgimage)).EndInit(); + this.panel1.ResumeLayout(false); + this.tableLayoutPanel1.ResumeLayout(false); + this.collapseItem1.ResumeLayout(false); + this.cll_panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.nud_opacity)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nud_colorMin)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nud_colorMax)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private ReaLTaiizor.Controls.FoxButton fb_fixSetting; + private ReaLTaiizor.Controls.FoxLabel foxLabel7; + private ReaLTaiizor.Controls.FoxTextBox ftb_h; + private ReaLTaiizor.Controls.FoxLabel foxLabel5; + private ReaLTaiizor.Controls.FoxTextBox ftb_w; + private ReaLTaiizor.Controls.FoxLabel foxLabel8; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private ReaLTaiizor.Controls.FoxLabel flb_act_mm; + private ReaLTaiizor.Controls.FoxLabel foxLabel9; + private ReaLTaiizor.Controls.FoxLabel foxLabel6; + private ReaLTaiizor.Controls.FoxLabel foxLabel2; + private ReaLTaiizor.Controls.FoxLabel foxLabel3; + private ReaLTaiizor.Controls.FoxLabel foxLabel1; + private ReaLTaiizor.Controls.HopePictureBox hpb_line; + private System.Windows.Forms.PictureBox pb_bgimage; + private ReaLTaiizor.Controls.FoxLabel foxLabel4; + private ReaLTaiizor.Controls.HopePictureBox hpb_wand; + private ReaLTaiizor.Controls.HopePictureBox hpb_xianduan; + private ReaLTaiizor.Controls.FoxTextBox ftb_r; + private ReaLTaiizor.Controls.HopePictureBox hpb_rect; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; + private ReaLTaiizor.Controls.HopePictureBox hpb_circe; + private AntdUI.Panel panel2; + private AntdUI.CollapseItem collapseItem2; + private AntdUI.Panel panel1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private AntdUI.CollapseItem collapseItem1; + private AntdUI.Collapse cll_panel; + private AntdUI.CollapseItem collapseItem3; + public ReaLTaiizor.Controls.DungeonTrackBar dtb_brightness; + public ReaLTaiizor.Controls.DungeonTrackBar dtb_colorMax; + public ReaLTaiizor.Controls.DungeonTrackBar dtb_colorMin; + public ReaLTaiizor.Controls.DungeonTrackBar dtb_opacity; + public System.Windows.Forms.NumericUpDown nud_colorMax; + public System.Windows.Forms.NumericUpDown nud_colorMin; + public System.Windows.Forms.NumericUpDown nud_opacity; + public System.Windows.Forms.NumericUpDown nud_brightness; + public System.Windows.Forms.ComboBox cb_colortable; + } +} \ No newline at end of file diff --git a/src/PBAnaly/UI/BioanayImagePaletteForm.cs b/src/PBAnaly/UI/BioanayImagePaletteForm.cs new file mode 100644 index 0000000..0fb97c9 --- /dev/null +++ b/src/PBAnaly/UI/BioanayImagePaletteForm.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace PBAnaly.UI +{ + public partial class BioanayImagePaletteForm : Form + { + public BioanayImagePaletteForm() + { + InitializeComponent(); + } + } +} diff --git a/src/PBAnaly/UI/BioanayImagePaletteForm.resx b/src/PBAnaly/UI/BioanayImagePaletteForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/src/PBAnaly/UI/BioanayImagePaletteForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/PBAnaly/UI/ImagePanel.Designer.cs b/src/PBAnaly/UI/ImagePanel.Designer.cs index b30022f..efab9af 100644 --- a/src/PBAnaly/UI/ImagePanel.Designer.cs +++ b/src/PBAnaly/UI/ImagePanel.Designer.cs @@ -308,24 +308,22 @@ // this.pl_bg_image.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(51)))), ((int)(((byte)(63))))); this.pl_bg_image.Controls.Add(this.pb_image); - this.pl_bg_image.Dock = System.Windows.Forms.DockStyle.Fill; this.pl_bg_image.EdgeColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(41)))), ((int)(((byte)(50))))); this.pl_bg_image.Location = new System.Drawing.Point(4, 4); this.pl_bg_image.Margin = new System.Windows.Forms.Padding(0); this.pl_bg_image.Name = "pl_bg_image"; this.pl_bg_image.Padding = new System.Windows.Forms.Padding(5); - this.pl_bg_image.Size = new System.Drawing.Size(288, 261); + this.pl_bg_image.Size = new System.Drawing.Size(237, 181); this.pl_bg_image.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality; this.pl_bg_image.TabIndex = 1; this.pl_bg_image.Text = "panel1"; // // pb_image // - this.pb_image.Dock = System.Windows.Forms.DockStyle.Fill; this.pb_image.Location = new System.Drawing.Point(5, 5); this.pb_image.Margin = new System.Windows.Forms.Padding(0); this.pb_image.Name = "pb_image"; - this.pb_image.Size = new System.Drawing.Size(278, 251); + this.pb_image.Size = new System.Drawing.Size(180, 124); this.pb_image.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.pb_image.TabIndex = 0; this.pb_image.TabStop = false; diff --git a/src/PBAnaly/UI/ImagePanel.cs b/src/PBAnaly/UI/ImagePanel.cs index 38dd608..41e3b1b 100644 --- a/src/PBAnaly/UI/ImagePanel.cs +++ b/src/PBAnaly/UI/ImagePanel.cs @@ -1372,7 +1372,8 @@ namespace PBAnaly.UI { saveFileDialog.Title = "保存Panel图像"; saveFileDialog.Filter = "PNG 图片|*.png|JPEG 图片|*.jpg|BMP 图片|*.bmp"; - if (saveFileDialog.ShowDialog() == DialogResult.OK) + if (saveFileDialog.ShowDialog() + == DialogResult.OK) { // 根据文件扩展名选择格式 System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Bmp; diff --git a/src/PBAnaly/UI/ImageToolPaletteForm.Designer.cs b/src/PBAnaly/UI/ImageToolPaletteForm.Designer.cs index 1bb3ad4..2ba5d23 100644 --- a/src/PBAnaly/UI/ImageToolPaletteForm.Designer.cs +++ b/src/PBAnaly/UI/ImageToolPaletteForm.Designer.cs @@ -484,10 +484,9 @@ // collapseItem2 // this.collapseItem2.Controls.Add(this.tableLayoutPanel3); - this.collapseItem2.Expand = true; - this.collapseItem2.Location = new System.Drawing.Point(19, 338); + this.collapseItem2.Location = new System.Drawing.Point(-331, -113); this.collapseItem2.Name = "collapseItem2"; - this.collapseItem2.Size = new System.Drawing.Size(329, 113); + this.collapseItem2.Size = new System.Drawing.Size(331, 113); this.collapseItem2.TabIndex = 1; this.collapseItem2.Text = "ROI工具"; // @@ -511,7 +510,7 @@ this.tableLayoutPanel3.RowCount = 2; this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 34F)); this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel3.Size = new System.Drawing.Size(329, 113); + this.tableLayoutPanel3.Size = new System.Drawing.Size(331, 113); this.tableLayoutPanel3.TabIndex = 0; // // hpb_wand @@ -521,7 +520,7 @@ this.hpb_wand.Location = new System.Drawing.Point(105, 3); this.hpb_wand.Name = "hpb_wand"; this.hpb_wand.PixelOffsetType = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; - this.hpb_wand.Size = new System.Drawing.Size(28, 28); + this.hpb_wand.Size = new System.Drawing.Size(28, 27); this.hpb_wand.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.hpb_wand.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality; this.hpb_wand.TabIndex = 13; @@ -536,7 +535,7 @@ this.hpb_xianduan.Location = new System.Drawing.Point(71, 3); this.hpb_xianduan.Name = "hpb_xianduan"; this.hpb_xianduan.PixelOffsetType = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; - this.hpb_xianduan.Size = new System.Drawing.Size(28, 28); + this.hpb_xianduan.Size = new System.Drawing.Size(28, 27); this.hpb_xianduan.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.hpb_xianduan.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality; this.hpb_xianduan.TabIndex = 12; @@ -551,7 +550,7 @@ this.hpb_circe.Location = new System.Drawing.Point(37, 3); this.hpb_circe.Name = "hpb_circe"; this.hpb_circe.PixelOffsetType = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; - this.hpb_circe.Size = new System.Drawing.Size(28, 28); + this.hpb_circe.Size = new System.Drawing.Size(28, 27); this.hpb_circe.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.hpb_circe.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality; this.hpb_circe.TabIndex = 11; @@ -565,7 +564,7 @@ this.hpb_rect.Dock = System.Windows.Forms.DockStyle.Fill; this.hpb_rect.Image = global::PBAnaly.Properties.Resources._10矩形; this.hpb_rect.Location = new System.Drawing.Point(2, 2); - this.hpb_rect.Margin = new System.Windows.Forms.Padding(2); + this.hpb_rect.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); this.hpb_rect.Name = "hpb_rect"; this.hpb_rect.PixelOffsetType = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; this.hpb_rect.Size = new System.Drawing.Size(30, 30); @@ -589,7 +588,7 @@ this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; this.panel2.Location = new System.Drawing.Point(3, 37); this.panel2.Name = "panel2"; - this.panel2.Size = new System.Drawing.Size(323, 73); + this.panel2.Size = new System.Drawing.Size(325, 73); this.panel2.TabIndex = 14; this.panel2.Text = "panel2"; // @@ -710,7 +709,7 @@ this.ControlBox = false; this.Controls.Add(this.cll_panel); this.FormStyle = MaterialSkin.Controls.MaterialForm.FormStyles.ActionBar_None; - this.Margin = new System.Windows.Forms.Padding(2); + this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "ImageToolPaletteForm"; diff --git a/src/PBBiologyVC/PBImageProcessVC.cpp b/src/PBBiologyVC/PBImageProcessVC.cpp index 1d57b90..9d7009d 100644 --- a/src/PBBiologyVC/PBImageProcessVC.cpp +++ b/src/PBBiologyVC/PBImageProcessVC.cpp @@ -28,7 +28,7 @@ int PBBiologyVC::PBImageProcessVC::render_process(System::Byte* pseImage, System cvtColor(r, r, COLOR_BGR2RGB); std::memcpy(mergepseImage, r.data, byteCount); cvtColor(cvRenderpseImage, cvRenderpseImage, COLOR_BGR2RGB); - + Mat bgr_tab_img = bgr_tab_image(colorbarWW, h_onecolor, bgr_tab); // std::cout << "w = " << bgr_tab_img.cols << "c= " << bgr_tab_img.rows << "c = " << bgr_tab_img.channels() << std::endl;