重构初版

This commit is contained in:
耿东亚 2024-11-19 16:07:08 +08:00
parent 9c3f181458
commit 64f012a777
151 changed files with 20191 additions and 0 deletions

360
.gitignore vendored Normal file
View File

@ -0,0 +1,360 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
libs/*
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*[.json, .xml, .info]
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd

65
src/PBAnaly.sln Normal file
View File

@ -0,0 +1,65 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.8.34330.188
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PBAnaly", "PBAnaly\PBAnaly.csproj", "{B9CEF793-3D50-48A7-8B1A-3F121ECABE12}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PBBiology", "PBBiology\PBBiology.vcxproj", "{EC5572D1-750B-4F4B-ADC2-02B9827E0647}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PBBiologyVC", "PBBiologyVC\PBBiologyVC.vcxproj", "{C1DD8A06-7351-4C8D-BD7F-B2BE76BB3903}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B9CEF793-3D50-48A7-8B1A-3F121ECABE12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9CEF793-3D50-48A7-8B1A-3F121ECABE12}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B9CEF793-3D50-48A7-8B1A-3F121ECABE12}.Debug|x64.ActiveCfg = Debug|Any CPU
{B9CEF793-3D50-48A7-8B1A-3F121ECABE12}.Debug|x64.Build.0 = Debug|Any CPU
{B9CEF793-3D50-48A7-8B1A-3F121ECABE12}.Debug|x86.ActiveCfg = Debug|Any CPU
{B9CEF793-3D50-48A7-8B1A-3F121ECABE12}.Debug|x86.Build.0 = Debug|Any CPU
{B9CEF793-3D50-48A7-8B1A-3F121ECABE12}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9CEF793-3D50-48A7-8B1A-3F121ECABE12}.Release|Any CPU.Build.0 = Release|Any CPU
{B9CEF793-3D50-48A7-8B1A-3F121ECABE12}.Release|x64.ActiveCfg = Release|Any CPU
{B9CEF793-3D50-48A7-8B1A-3F121ECABE12}.Release|x64.Build.0 = Release|Any CPU
{B9CEF793-3D50-48A7-8B1A-3F121ECABE12}.Release|x86.ActiveCfg = Release|Any CPU
{B9CEF793-3D50-48A7-8B1A-3F121ECABE12}.Release|x86.Build.0 = Release|Any CPU
{EC5572D1-750B-4F4B-ADC2-02B9827E0647}.Debug|Any CPU.ActiveCfg = Debug|x64
{EC5572D1-750B-4F4B-ADC2-02B9827E0647}.Debug|Any CPU.Build.0 = Debug|x64
{EC5572D1-750B-4F4B-ADC2-02B9827E0647}.Debug|x64.ActiveCfg = Debug|x64
{EC5572D1-750B-4F4B-ADC2-02B9827E0647}.Debug|x64.Build.0 = Debug|x64
{EC5572D1-750B-4F4B-ADC2-02B9827E0647}.Debug|x86.ActiveCfg = Debug|Win32
{EC5572D1-750B-4F4B-ADC2-02B9827E0647}.Debug|x86.Build.0 = Debug|Win32
{EC5572D1-750B-4F4B-ADC2-02B9827E0647}.Release|Any CPU.ActiveCfg = Release|x64
{EC5572D1-750B-4F4B-ADC2-02B9827E0647}.Release|Any CPU.Build.0 = Release|x64
{EC5572D1-750B-4F4B-ADC2-02B9827E0647}.Release|x64.ActiveCfg = Release|x64
{EC5572D1-750B-4F4B-ADC2-02B9827E0647}.Release|x64.Build.0 = Release|x64
{EC5572D1-750B-4F4B-ADC2-02B9827E0647}.Release|x86.ActiveCfg = Release|Win32
{EC5572D1-750B-4F4B-ADC2-02B9827E0647}.Release|x86.Build.0 = Release|Win32
{C1DD8A06-7351-4C8D-BD7F-B2BE76BB3903}.Debug|Any CPU.ActiveCfg = Debug|x64
{C1DD8A06-7351-4C8D-BD7F-B2BE76BB3903}.Debug|Any CPU.Build.0 = Debug|x64
{C1DD8A06-7351-4C8D-BD7F-B2BE76BB3903}.Debug|x64.ActiveCfg = Debug|x64
{C1DD8A06-7351-4C8D-BD7F-B2BE76BB3903}.Debug|x64.Build.0 = Debug|x64
{C1DD8A06-7351-4C8D-BD7F-B2BE76BB3903}.Debug|x86.ActiveCfg = Debug|Win32
{C1DD8A06-7351-4C8D-BD7F-B2BE76BB3903}.Debug|x86.Build.0 = Debug|Win32
{C1DD8A06-7351-4C8D-BD7F-B2BE76BB3903}.Release|Any CPU.ActiveCfg = Release|x64
{C1DD8A06-7351-4C8D-BD7F-B2BE76BB3903}.Release|Any CPU.Build.0 = Release|x64
{C1DD8A06-7351-4C8D-BD7F-B2BE76BB3903}.Release|x64.ActiveCfg = Release|x64
{C1DD8A06-7351-4C8D-BD7F-B2BE76BB3903}.Release|x64.Build.0 = Release|x64
{C1DD8A06-7351-4C8D-BD7F-B2BE76BB3903}.Release|x86.ActiveCfg = Release|Win32
{C1DD8A06-7351-4C8D-BD7F-B2BE76BB3903}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C1622B5B-B88B-4DE1-8CE7-A4398F04AE53}
EndGlobalSection
EndGlobal

6
src/PBAnaly/App.config Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
</configuration>

194
src/PBAnaly/DataProcessForm.Designer.cs generated Normal file
View File

@ -0,0 +1,194 @@
namespace PBAnaly
{
partial class DataProcessForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DataProcessForm));
this.PictureBoxpanel = new System.Windows.Forms.Panel();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.Control_panel = new System.Windows.Forms.Panel();
this.panel2 = new System.Windows.Forms.Panel();
this.materialButton_Load = new MaterialSkin.Controls.MaterialButton();
this.panel1 = new System.Windows.Forms.Panel();
this.materialLabel1 = new MaterialSkin.Controls.MaterialLabel();
this.materialFloatingActionButton_Plus = new MaterialSkin.Controls.MaterialFloatingActionButton();
this.materialFloatingActionButton_Minus = new MaterialSkin.Controls.MaterialFloatingActionButton();
this.PictureBoxpanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.Control_panel.SuspendLayout();
this.panel2.SuspendLayout();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// PictureBoxpanel
//
this.PictureBoxpanel.Controls.Add(this.pictureBox1);
this.PictureBoxpanel.Dock = System.Windows.Forms.DockStyle.Bottom;
this.PictureBoxpanel.Location = new System.Drawing.Point(3, 72);
this.PictureBoxpanel.Margin = new System.Windows.Forms.Padding(0);
this.PictureBoxpanel.Name = "PictureBoxpanel";
this.PictureBoxpanel.Size = new System.Drawing.Size(408, 351);
this.PictureBoxpanel.TabIndex = 0;
//
// pictureBox1
//
this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureBox1.Location = new System.Drawing.Point(0, 0);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(408, 351);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
//
// Control_panel
//
this.Control_panel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.Control_panel.Controls.Add(this.panel2);
this.Control_panel.Controls.Add(this.panel1);
this.Control_panel.Dock = System.Windows.Forms.DockStyle.Top;
this.Control_panel.Location = new System.Drawing.Point(3, 24);
this.Control_panel.Name = "Control_panel";
this.Control_panel.Size = new System.Drawing.Size(408, 44);
this.Control_panel.TabIndex = 1;
//
// panel2
//
this.panel2.Controls.Add(this.materialButton_Load);
this.panel2.Dock = System.Windows.Forms.DockStyle.Left;
this.panel2.Location = new System.Drawing.Point(0, 0);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(42, 40);
this.panel2.TabIndex = 1;
//
// materialButton_Load
//
this.materialButton_Load.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_Load.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_Load.Depth = 0;
this.materialButton_Load.Dock = System.Windows.Forms.DockStyle.Left;
this.materialButton_Load.HighEmphasis = true;
this.materialButton_Load.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_Load.Icon")));
this.materialButton_Load.Location = new System.Drawing.Point(0, 0);
this.materialButton_Load.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
this.materialButton_Load.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_Load.Name = "materialButton_Load";
this.materialButton_Load.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_Load.Size = new System.Drawing.Size(64, 40);
this.materialButton_Load.TabIndex = 0;
this.materialButton_Load.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton_Load.UseAccentColor = true;
this.materialButton_Load.UseVisualStyleBackColor = true;
//
// panel1
//
this.panel1.Controls.Add(this.materialLabel1);
this.panel1.Controls.Add(this.materialFloatingActionButton_Plus);
this.panel1.Controls.Add(this.materialFloatingActionButton_Minus);
this.panel1.Dock = System.Windows.Forms.DockStyle.Right;
this.panel1.Location = new System.Drawing.Point(259, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(145, 40);
this.panel1.TabIndex = 0;
//
// materialLabel1
//
this.materialLabel1.AutoSize = true;
this.materialLabel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.materialLabel1.Depth = 0;
this.materialLabel1.Font = new System.Drawing.Font("Roboto", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
this.materialLabel1.FontType = MaterialSkin.MaterialSkinManager.fontType.Caption;
this.materialLabel1.ForeColor = System.Drawing.SystemColors.Desktop;
this.materialLabel1.Location = new System.Drawing.Point(54, 12);
this.materialLabel1.MouseState = MaterialSkin.MouseState.HOVER;
this.materialLabel1.Name = "materialLabel1";
this.materialLabel1.Size = new System.Drawing.Size(16, 14);
this.materialLabel1.TabIndex = 2;
this.materialLabel1.Text = "1X";
//
// materialFloatingActionButton_Plus
//
this.materialFloatingActionButton_Plus.Depth = 0;
this.materialFloatingActionButton_Plus.Icon = ((System.Drawing.Image)(resources.GetObject("materialFloatingActionButton_Plus.Icon")));
this.materialFloatingActionButton_Plus.Location = new System.Drawing.Point(88, 2);
this.materialFloatingActionButton_Plus.Mini = true;
this.materialFloatingActionButton_Plus.MouseState = MaterialSkin.MouseState.HOVER;
this.materialFloatingActionButton_Plus.Name = "materialFloatingActionButton_Plus";
this.materialFloatingActionButton_Plus.Size = new System.Drawing.Size(40, 40);
this.materialFloatingActionButton_Plus.TabIndex = 1;
this.materialFloatingActionButton_Plus.Text = "materialFloatingActionButton2";
this.materialFloatingActionButton_Plus.UseVisualStyleBackColor = true;
//
// materialFloatingActionButton_Minus
//
this.materialFloatingActionButton_Minus.Depth = 0;
this.materialFloatingActionButton_Minus.Icon = ((System.Drawing.Image)(resources.GetObject("materialFloatingActionButton_Minus.Icon")));
this.materialFloatingActionButton_Minus.Location = new System.Drawing.Point(2, 2);
this.materialFloatingActionButton_Minus.Mini = true;
this.materialFloatingActionButton_Minus.MouseState = MaterialSkin.MouseState.HOVER;
this.materialFloatingActionButton_Minus.Name = "materialFloatingActionButton_Minus";
this.materialFloatingActionButton_Minus.Size = new System.Drawing.Size(40, 40);
this.materialFloatingActionButton_Minus.TabIndex = 0;
this.materialFloatingActionButton_Minus.Text = "materialFloatingActionButton1";
this.materialFloatingActionButton_Minus.UseVisualStyleBackColor = true;
//
// DataProcessForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(414, 426);
this.Controls.Add(this.PictureBoxpanel);
this.Controls.Add(this.Control_panel);
this.FormStyle = MaterialSkin.Controls.MaterialForm.FormStyles.ActionBar_None;
this.Name = "DataProcessForm";
this.Padding = new System.Windows.Forms.Padding(3, 24, 3, 3);
this.Text = "DataProcessForm";
this.PictureBoxpanel.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.Control_panel.ResumeLayout(false);
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel PictureBoxpanel;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Panel Control_panel;
private System.Windows.Forms.Panel panel2;
private MaterialSkin.Controls.MaterialButton materialButton_Load;
private System.Windows.Forms.Panel panel1;
private MaterialSkin.Controls.MaterialLabel materialLabel1;
private MaterialSkin.Controls.MaterialFloatingActionButton materialFloatingActionButton_Plus;
private MaterialSkin.Controls.MaterialFloatingActionButton materialFloatingActionButton_Minus;
}
}

View File

@ -0,0 +1,228 @@
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;
using MaterialSkin;
using MaterialSkin.Controls;
using OpenCvSharp;
using OpenCvSharp.Extensions;
using PBAnaly.Module;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Rebar;
namespace PBAnaly
{
public partial class DataProcessForm : MaterialForm
{
private Mat image = null;
private string filePath = "";
private List<PBAnalyCommMannager.band_infos> bands = new List<PBAnalyCommMannager.band_infos>();
private Cursor cursor = null;
private int bands_index = -1;
public DataProcessForm(MaterialSkinManager materialSkinManager,string filePath)
{
InitializeComponent();
UIInit();
Inn_materialSkinManager = materialSkinManager;
this.filePath = filePath;
image = Cv2.ImRead(filePath, ImreadModes.Unchanged);
if (image.Depth() != MatType.CV_8U)
{
Mat convertedImage = new Mat();
image.ConvertTo(convertedImage, MatType.CV_8U, 0.00390625);
pictureBox1.Image = convertedImage.ToBitmap();
}
else
{
pictureBox1.Image = image.ToBitmap();
}
this.MouseDown += DataProcessForm_MouseDown;
this.pictureBox1.MouseMove += PictureBox1_MouseMove;
this.pictureBox1.MouseDown += PictureBox1_MouseDown;
}
private void PictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (cursor != null)
{
if (cursor == Cursors.SizeAll)
{
for (int i = 0; i < bands.Count(); i++)
{
PBAnalyCommMannager.band_infos _band= bands[i];
if (bands_index == i)
{
_band.thick = 2;
if(PBAnalyCommMannager.laneChartForm!=null)
PBAnalyCommMannager.laneChartForm.Draw(_band);
}
else
{
_band.thick = 1;
}
bands[i] = _band;
}
Draw();
}
}
}
private void PictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (pictureBox1.Image == null) return;
#region
// 获取PictureBox的尺寸和图像的原始尺寸
float imageWidth = pictureBox1.Image.Width;
float imageHeight = pictureBox1.Image.Height;
float pictureBoxWidth = pictureBox1.Width;
float pictureBoxHeight = pictureBox1.Height;
// 计算缩放比例
float scaleX = pictureBoxWidth / imageWidth;
float scaleY = pictureBoxHeight / imageHeight;
float scale = Math.Min(scaleX, scaleY);
// 计算图像实际显示的尺寸
float displayWidth = imageWidth * scale;
float displayHeight = imageHeight * scale;
// 计算图像在PictureBox中的位置偏移
float offsetX = (pictureBoxWidth - displayWidth) / 2;
float offsetY = (pictureBoxHeight - displayHeight) / 2;
// 转换坐标
int actualX = (int)Math.Floor((e.X - offsetX) / scale);
int actualY = (int)Math.Floor((e.Y - offsetY) / scale);
this.pictureBox1.Cursor = Cursors.Default;
// 确保坐标在有效范围内
if (actualX >= 0 && actualX <= imageWidth && actualY >= 0 && actualY <= imageHeight)
{
int index = 0;
foreach (var item in bands)
{
if (actualX >= item.startX - 3 && actualX <= item.startX + 3)
{
bands_index = index;
cursor = Cursors.SizeWE;
this.pictureBox1.Cursor = Cursors.SizeWE;
break;
}
else if (actualX > item.startX + 3 && actualX < item.endX - 3)
{
bands_index = index;
cursor = Cursors.SizeAll;
this.pictureBox1.Cursor = Cursors.SizeAll;
break;
}
else if (actualX >= item.endX - 3 && actualX <= item.endX + 3)
{
bands_index = index;
cursor = Cursors.SizeWE;
this.pictureBox1.Cursor = Cursors.SizeWE;
break;
}
index++;
}
}
#endregion
#region
#endregion
}
private void DataProcessForm_MouseDown(object sender, MouseEventArgs e)
{
PBAnalyCommMannager.processForm = this;
Console.WriteLine("切换form:"+filePath);
}
public MaterialSkinManager Inn_materialSkinManager;
public void UIInit()
{
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint, true);
Inn_materialSkinManager = MaterialSkinManager.Instance; // 初始化 MaterialSkinManager 实例
Inn_materialSkinManager.AddFormToManage(this); // 将要应用 Material Design 的窗体添加到管理列表中
//Inn_materialSkinManager.Theme = MaterialSkinManager.Themes.DARK; // Theme 属性用来设置整体的主题
//Inn_materialSkinManager.ColorScheme = new ColorScheme(Primary.BlueGrey800, Primary.BlueGrey900, Primary.BlueGrey500, Accent.Cyan700, TextShade.WHITE); // ColorScheme 属性来设置配色方案
}
#region
public Mat getImage
{
get { return image; }
}
public Mat SetImage
{
set
{
var bitmapImage = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(value);
pictureBox1.Image = bitmapImage;
}
}
public List<PBAnalyCommMannager.band_infos> SetBands
{
set
{
this.bands = value;
}
}
/// <summary>
/// 在原图基础上绘制泳道或者条带
/// </summary>
public void Draw()
{
Mat input_cn1 = new Mat();
image.ConvertTo(input_cn1, MatType.CV_8U, 0.00390625);
if (input_cn1.Channels() == 1)
{
Cv2.CvtColor(input_cn1, input_cn1, ColorConversionCodes.GRAY2BGR);
}
foreach (var _band in bands)
{
OpenCvSharp.Point rectStart = new OpenCvSharp.Point(_band.startX, _band.startY);
OpenCvSharp.Point rectEnd = new OpenCvSharp.Point(_band.endX, _band.endY);
Cv2.Rectangle(input_cn1, rectStart, rectEnd, _band.color, _band.thick); // 线条粗细为2
// 绘制十字形
// 十字线长度
int lineLength = 5; // 可以根据实际需求调整
float centerX = (float)(rectStart.X +(rectEnd.X - rectStart.X)/2.0);
float centerY = rectStart.Y + _band._Info.band_point[0][0];
int thickness = 1;
Scalar crossColor = new Scalar(0, 0, 255); // 红色
// 水平线
Cv2.Line(input_cn1, new OpenCvSharp.Point(centerX - lineLength, centerY), new OpenCvSharp.Point(centerX + lineLength, centerY), crossColor, thickness);
// 垂直线
Cv2.Line(input_cn1, new OpenCvSharp.Point(centerX, centerY - lineLength), new OpenCvSharp.Point(centerX, centerY + lineLength), crossColor, thickness);
// 绘制条带矩形
crossColor = new Scalar(255, 0, 0); // 蓝色
OpenCvSharp.Point rectStart1 = new OpenCvSharp.Point(_band.startX, rectStart.Y + _band._Info.band_point[0][1]);
OpenCvSharp.Point rectEnd1 = new OpenCvSharp.Point(_band.endX, rectStart.Y + _band._Info.band_point[0][2]);
Cv2.Rectangle(input_cn1, rectStart1, rectEnd1, crossColor, thickness); // 线条粗细为2
}
SetImage = input_cn1;
}
#endregion
}
}

View File

@ -0,0 +1,429 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="materialButton_Load.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
3f4/vwXOM7HXEWEAAAAASUVORK5CYII=
</value>
</data>
<data name="materialFloatingActionButton_Plus.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAArZJREFUaEPt
mMtqFkEQhf+FcWNIVDAI6k5NBBfe4sZ3MCr4JhJ1n6jrGFwZ9CFc5aIg+AK6SMSVqBvxgkR0pe130qch
hsykozP/BfqDQ2aqa6qqk56e6nQKhUKh0LeEEE6hW2gFraHvlq6X0U00Yff+gaIm0VOUywt0yY/3DooY
Qg/QbyQ+owV0GY2jfZaup5DGviChZ+bRkMN1FxIfRM+Q+IFm0IiHK8FnFM36GaG/3AEPdwcS6jeflswH
NOmhbHjmDHqrAPAc7fVQ+5BMy0a8Q0ds3jV6Fr1XIJi3uV1IdBFp/WoJnLN5Wxi/Lvl2Wxi/gH4ixTxv
c3uQJK37GZsqsV/wbSW43I2eYcWmdiCB9nmh3Sbnhd3At5Xgohc77U7jNjcPwW/HHOGhTbXYd8cJCNwe
Re8wbVPzEFxfUzFlUy32zZ3A1egdlmxqHoK/iTnCcZtqsW/uBPSxE2s2NQ/B12OOMGzTBtxrt9ktf+1O
3A9Hc1i3qXkUPOZoZQIj0Ry+2dQ8BH8dc4QTNtVi39wlNBG9w6pNzUPwNl/ia9E7LNrUPARXPy8WbKrF
vrkTeBy9ww2bmofg6c+sD9mozZVE150ngMt+lD5kJ21uBxKkLnTWpkrslzOBe9EzLNvUHiRR85Waudrm
i/GcZk6nOTVzv1Btc9gYJNJJSnxE/9NOH0WpnZ6zuX1Ipj5eh3XxCf3LgeYs6v6BhkRj6JWyQpqElsAd
lPNi64XVmtczQv/B6M6RkkSH0EtlhVV0DN1H6VCvnURd5RWkHUvtgaRrNWvaKr8ioTU/h/Y4fLuQaGvx
hz2ksdPoiQYy0QexOy+sIFll8ZvBro5yGi3ZT72TpOtFpLF29/mtkDCr+L6EYkvxPYFiS/E9gWIHuvjN
X1j9HPPQYKCCXfjgFZ/wJAaz+EKhUOgCnc4fDoTrsg1LNtUAAAAASUVORK5CYII=
</value>
</data>
<data name="materialFloatingActionButton_Minus.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAApJJREFUaEPt
mE1LVkEcxZ9Ftkm0giSodpUGLXqzTd8hK/CbhNVeq7VJq6Q+RCtfCoK+QC00WkW1iV4Io1Y1/Y5zBkQQ
r96Z5wXmBwfvc+be859H5879XzuVSqVS6VtCCOfQXbSK1tEvS8cr6A6a8On9A5OaRC9QU16ja768dzCJ
IfQY/UPiG1pE19E4OmTpeApp7DsSumYBDTmuu1D4KHqJxG80i0Y8vCOcM4rmfI3QX+6Ih7sDBfWbT0vm
M5r0UGO45gL6oAB4hQ56qDwU07IRH9EJ23tG16JPCoIF22Wh0FWk9aslcMn2viHjCvrjzMu2y0GRtO5n
bbWGrAcxMqzaKgMFtM8L7Ta73rBNIUs3dtqdxm3nh/B7sUZ4YisbZD6N0WHGVn4I19NUTNnKBpk3Y3RY
tpUfwt/HGuG0rWyQqYedWLeVH8I3Yo0wbGsTPk9He09M+/JN+Dwc7bBhKz8KjzWKfIGRaIeftvJD+LtY
I5yxlQ0yJ2J0WLOVH8JL3sS3YnRYspUfwtXPi0Vb2SDzWYwOt23lh/D0Z9aDbNR2a8g6jNKD7KztMlAg
daFztlpD1sMYGVZslYMiar5SM9e6+SJDb3Nq5v6i1s1hIyikNynxBbVpp0+i1E7P2y4PxdTH62VdfEX7
eaG5iLr/QkOhMfRWVSF9CS2B+2jXG5tzdMNqzesaof9gdOeVkkLH0BtVhTV0Cj1C6aVeO4m6yhtIO5ba
A0nHata0Vf5AQmt+Hh1wfFkotH3yxz2ksfPouQYaogdid25YQbEdJ78VfHWUM2jZ56l3knS8hDRWdp/f
DgUbTb4vYbJ18j2BydbJ9wQmO9CT3/qE1c8xDw0GmrAnPniTT/hLDObkK5VKpQt0Ov8B5C6OuhEACIYA
AAAASUVORK5CYII=
</value>
</data>
</root>

BIN
src/PBAnaly/GS-Analy.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

127
src/PBAnaly/LaneChartForm.Designer.cs generated Normal file
View File

@ -0,0 +1,127 @@
namespace PBAnaly
{
partial class LaneChartForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint5 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(1D, 5D);
System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint6 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(1.5D, 5D);
System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint7 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(1.9D, 8D);
System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint8 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(0D, 0D);
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.chart1 = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.menuStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.chart1)).BeginInit();
this.SuspendLayout();
//
// menuStrip1
//
this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem,
this.ToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(3, 24);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Padding = new System.Windows.Forms.Padding(4, 2, 0, 2);
this.menuStrip1.Size = new System.Drawing.Size(899, 25);
this.menuStrip1.TabIndex = 0;
this.menuStrip1.Text = "menuStrip1";
//
// 文件ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "文件ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
this.ToolStripMenuItem.Text = "文件";
//
// 选项ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "选项ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
this.ToolStripMenuItem.Text = "选项";
//
// chart1
//
chartArea2.Name = "ChartArea1";
this.chart1.ChartAreas.Add(chartArea2);
this.chart1.Dock = System.Windows.Forms.DockStyle.Fill;
legend2.Name = "Legend1";
this.chart1.Legends.Add(legend2);
this.chart1.Location = new System.Drawing.Point(3, 49);
this.chart1.Margin = new System.Windows.Forms.Padding(2);
this.chart1.Name = "chart1";
this.chart1.Palette = System.Windows.Forms.DataVisualization.Charting.ChartColorPalette.Bright;
series2.ChartArea = "ChartArea1";
series2.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine;
series2.Legend = "Legend1";
series2.Name = "Series1";
series2.Points.Add(dataPoint5);
series2.Points.Add(dataPoint6);
series2.Points.Add(dataPoint7);
series2.Points.Add(dataPoint8);
this.chart1.Series.Add(series2);
this.chart1.Size = new System.Drawing.Size(899, 366);
this.chart1.TabIndex = 1;
this.chart1.Text = "chart1";
this.chart1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.chart1_MouseDown);
this.chart1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.chart1_MouseUp);
//
// LaneChartForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(905, 418);
this.Controls.Add(this.chart1);
this.Controls.Add(this.menuStrip1);
this.DrawerAutoShow = true;
this.FormStyle = MaterialSkin.Controls.MaterialForm.FormStyles.ActionBar_None;
this.MainMenuStrip = this.menuStrip1;
this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "LaneChartForm";
this.Padding = new System.Windows.Forms.Padding(3, 24, 3, 3);
this.Text = "LaneChartForm";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.LaneChartForm_FormClosing);
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.chart1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.DataVisualization.Charting.Chart chart1;
}
}

View File

@ -0,0 +1,252 @@
using MaterialSkin.Controls;
using PBBiologyVC;
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;
using System.Windows.Forms.DataVisualization.Charting;
using System.Windows.Markup;
using System.Xml.Linq;
using static PBAnaly.Module.PBAnalyCommMannager;
namespace PBAnaly
{
public partial class LaneChartForm : MaterialForm
{
public LaneChartForm()
{
InitializeComponent();
}
public void Draw(band_infos band_info)
{
chart1.ChartAreas.Clear();
chart1.Series.Clear();
chart1.Annotations.Clear();
ChartArea chartArea = new ChartArea();
chartArea.AxisX.Minimum = 0;
chartArea.AxisX.Maximum = 1;
var xdata = band_info._Info.xdata;
var ydata = band_info._Info.ydata;
float maxY = ydata.Max();
double maxX = xdata[ydata.IndexOf(maxY)];
curmaxY = maxY;
curmaxX = maxX;
// 显著增加Y轴的显示范围以确保箭头可见
chartArea.AxisY.Minimum = 0; // 适当设置以显示更低的值
chartArea.AxisY.Maximum = maxY * 1.3; // 增加额外空间显示箭头
chart1.ChartAreas.Add(chartArea);
Series series = new Series
{
ChartType = SeriesChartType.Line,
BorderWidth = 2
};
for (int i = 0; i < xdata.Count; i++)
{
series.Points.AddXY(xdata[i], ydata[i]);
}
chart1.Series.Add(series);
// 确保箭头和标注在可见范围
chart1.ResetAutoValues();
// 创建一个显著可见的箭头注释
ArrowAnnotation arrow = new ArrowAnnotation();
arrow.ArrowSize = 2; // 增大箭头大小
arrow.ArrowStyle = ArrowStyle.Simple;
arrow.LineColor = Color.Black; // 使用红色以增加可见性
arrow.LineWidth = 2; // 增加线宽
arrow.AnchorDataPoint = series.Points.FindByValue(maxY); // 直接锚定到最大值点
arrow.Height = 10; // 增加箭头长度
arrow.Width = 0; // 宽度为0
arrow.AllowMoving = false; // 允许移动
arrow.IsSizeAlwaysRelative = false; // 设置大小不总是相对的,以便可拖动
chart1.Annotations.Add(arrow);
int x = band_info._Info.band_point[0][1];
int x1 = band_info._Info.band_point[0][2];
float curY = ydata[x];
float curY1 = ydata[x1];
float curX = xdata[x];
//// 添加括号的文本注释
TextAnnotation leftBracket = new TextAnnotation();
leftBracket.Name = "left";
leftBracket.Text = "[";
leftBracket.Font = new Font("Arial", 12, FontStyle.Regular); // 设置字体样式
leftBracket.ForeColor = Color.Black;
var da = series.Points.FindAllByValue(curY);
foreach (var d in da)
{
if (d.XValue == curX)
{
leftBracket.AnchorDataPoint = d; // 直接锚定到最大值点
break;
}
}
//leftBracket.AnchorDataPoint = series.Points.FindAllByValue*.FindByValue(curY); // 直接锚定到最大值点
leftBracket.Height = 1; // 增加箭头长度
leftBracket.Width =10; // 宽度为0
chart1.Annotations.Add(leftBracket);
TextAnnotation reghtBracket = new TextAnnotation();
reghtBracket.Name = "right";
reghtBracket.Text = "]";
reghtBracket.Font = new Font("Arial", 12, FontStyle.Regular); // 设置字体样式
reghtBracket.ForeColor = Color.Black;
reghtBracket.AnchorDataPoint = series.Points.FindByValue(curY1); // 直接锚定到最大值点
reghtBracket.Height = 1; // 增加箭头长度
reghtBracket.Width = 10; // 宽度为0
chart1.Annotations.Add(reghtBracket);
chart1.MouseMove += chart1_MouseMove;
}
private bool isAnnotationMoving = false;
private Annotation selectedAnnotation = null;
private PointF startLocation;
private float curmaxY = 0;
private double curmaxX = 0;
private void chart1_MouseMove(object sender, MouseEventArgs e)
{
var hit = chart1.HitTest(e.X, e.Y, ChartElementType.Annotation);
if (hit.ChartElementType == ChartElementType.Annotation)
{
var annotation = hit.Object as Annotation;
if (annotation != null)
{
if (annotation.Name == "left" || annotation.Name == "right")
{
chart1.Cursor = Cursors.SizeWE;
}
}
}
else
{
chart1.Cursor = Cursors.Default;
}
if (isAnnotationMoving && selectedAnnotation != null)
{
double xVal = 0;
try
{
xVal = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.X);
}
catch (Exception)
{
return;
}
if (selectedAnnotation.Name == "left")
{
if (xVal < 0 || xVal > curmaxX)
{
return;
}
}
else if (selectedAnnotation.Name == "right")
{
if (xVal < curmaxX || xVal> 1)
{
return;
}
}
int index = FindClosestPointIndex(xVal);
if (index != -1)
{
selectedAnnotation.AnchorDataPoint = chart1.Series[0].Points[index];
}
}
}
private int FindClosestPointIndex(double xVal)
{
Series series = chart1.Series[0];
double minDistance = double.MaxValue;
int closestIndex = -1;
for (int i = 0; i < series.Points.Count; i++)
{
double distance = Math.Abs(series.Points[i].XValue - xVal);
if (distance < minDistance)
{
minDistance = distance;
closestIndex = i;
}
}
return closestIndex;
}
private void chart1_MouseDown(object sender, MouseEventArgs e)
{
var hit = chart1.HitTest(e.X, e.Y, ChartElementType.Annotation);
if (hit.ChartElementType == ChartElementType.Annotation)
{
var annotation = hit.Object as Annotation;
if (annotation != null)
{
if (annotation.Name == "left" || annotation.Name == "right")
{
chart1.Cursor = Cursors.SizeWE;
isAnnotationMoving = true;
selectedAnnotation = annotation;
startLocation = new PointF(e.X, e.Y);
Console.WriteLine(annotation.Name);
}
}
}
}
private void chart1_MouseUp(object sender, MouseEventArgs e)
{
if (isAnnotationMoving)
{
isAnnotationMoving = false;
selectedAnnotation = null;
}
}
private void LaneChartForm_FormClosing(object sender, FormClosingEventArgs e)
{
this.Hide();//窗体只被隐藏不被关闭
e.Cancel = true;
}
}
}

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

133
src/PBAnaly/LogForm.Designer.cs generated Normal file
View File

@ -0,0 +1,133 @@
namespace PBAnaly
{
partial class LogForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
this.panel1 = new System.Windows.Forms.Panel();
this.Log_dataGridView = new System.Windows.Forms.DataGridView();
this.Item = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Description = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Time = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.Log_dataGridView)).BeginInit();
this.SuspendLayout();
//
// panel1
//
this.panel1.Controls.Add(this.Log_dataGridView);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(3, 64);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(670, 349);
this.panel1.TabIndex = 0;
//
// Log_dataGridView
//
this.Log_dataGridView.BackgroundColor = System.Drawing.Color.DimGray;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.ControlDarkDark;
dataGridViewCellStyle1.Font = new System.Drawing.Font("新細明體", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(136)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.ControlDarkDark;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.Log_dataGridView.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.Log_dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.Log_dataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Item,
this.Description,
this.Time});
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.WindowFrame;
dataGridViewCellStyle2.Font = new System.Drawing.Font("新細明體", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(136)));
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.ControlLightLight;
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.Log_dataGridView.DefaultCellStyle = dataGridViewCellStyle2;
this.Log_dataGridView.Dock = System.Windows.Forms.DockStyle.Fill;
this.Log_dataGridView.GridColor = System.Drawing.SystemColors.Control;
this.Log_dataGridView.Location = new System.Drawing.Point(0, 0);
this.Log_dataGridView.Name = "Log_dataGridView";
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle3.Font = new System.Drawing.Font("新細明體", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(136)));
dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.Log_dataGridView.RowHeadersDefaultCellStyle = dataGridViewCellStyle3;
this.Log_dataGridView.RowHeadersVisible = false;
this.Log_dataGridView.RowTemplate.Height = 24;
this.Log_dataGridView.Size = new System.Drawing.Size(670, 349);
this.Log_dataGridView.TabIndex = 0;
//
// Item
//
this.Item.HeaderText = "Item";
this.Item.Name = "Item";
//
// Description
//
this.Description.HeaderText = "Description";
this.Description.Name = "Description";
this.Description.Width = 400;
//
// Time
//
this.Time.HeaderText = "Time";
this.Time.Name = "Time";
this.Time.Width = 150;
//
// LogForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoSize = true;
this.ClientSize = new System.Drawing.Size(676, 416);
this.Controls.Add(this.panel1);
this.Name = "LogForm";
this.Text = "LogForm";
this.panel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.Log_dataGridView)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.DataGridView Log_dataGridView;
private System.Windows.Forms.DataGridViewTextBoxColumn Item;
private System.Windows.Forms.DataGridViewTextBoxColumn Description;
private System.Windows.Forms.DataGridViewTextBoxColumn Time;
}
}

74
src/PBAnaly/LogForm.cs Normal file
View File

@ -0,0 +1,74 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MaterialSkin;
using MaterialSkin.Controls;
namespace PBAnaly
{
public partial class LogForm : MaterialForm
{
string Inner_UserID;
public LogForm(MaterialSkinManager materialSkinManager,string UserID)
{
InitializeComponent();
Inner_UserID = UserID;
UIInit();
LoadLogToList();
}
public MaterialSkinManager Inn_materialSkinManager;
public void UIInit()
{
this.Text = string.Format("Current User : {0}", Inner_UserID);
//this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint, true);
Inn_materialSkinManager = MaterialSkinManager.Instance; // 初始化 MaterialSkinManager 实例
//Inn_materialSkinManager.AddFormToManage(this); // 将要应用 Material Design 的窗体添加到管理列表中
//Inn_materialSkinManager.Theme = MaterialSkinManager.Themes.DARK; // Theme 属性用来设置整体的主题
//Inn_materialSkinManager.ColorScheme = new ColorScheme(Primary.BlueGrey800, Primary.BlueGrey900, Primary.BlueGrey500, Accent.Cyan700, TextShade.WHITE); // ColorScheme 属性来设置配色方案
if (Inn_materialSkinManager.Theme == MaterialSkinManager.Themes.DARK)
{
Log_dataGridView.DefaultCellStyle.BackColor = Color.DimGray;
}
else
{
Log_dataGridView.DefaultCellStyle.BackColor = Color.LightGray;
}
}
private void LoadLogToList()
{
// Save Log Information
Read_Write_Log read_Write_Log = new Read_Write_Log();
string SaveLogFile = read_Write_Log.LogFile;
List<Log> OldLog = new List<Log>();
if (File.Exists(SaveLogFile))
{
OldLog = read_Write_Log.ReadCsv(SaveLogFile);
}
if (OldLog != null && OldLog.Count > 0)
{
int count = 0;
foreach (var item in OldLog)
{
if(Inner_UserID == item.UserID)
{
Log_dataGridView.Rows.Insert(count, item.ITEM, item.Description, item.Time);
count++;
}
}
}
}
}
}

129
src/PBAnaly/LogForm.resx Normal file
View File

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="Item.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Description.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Time.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>

181
src/PBAnaly/LoginForm.Designer.cs generated Normal file
View File

@ -0,0 +1,181 @@
namespace PBAnaly
{
partial class LoginForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.userName_materialTextBox = new MaterialSkin.Controls.MaterialTextBox2();
this.password_materialTextBox = new MaterialSkin.Controls.MaterialTextBox2();
this.Login_materialButton = new MaterialSkin.Controls.MaterialButton();
this.SIGNIN_materialButton = new MaterialSkin.Controls.MaterialButton();
this.rememberme_materialCheckbox = new MaterialSkin.Controls.MaterialCheckbox();
this.SuspendLayout();
//
// userName_materialTextBox
//
this.userName_materialTextBox.AnimateReadOnly = false;
this.userName_materialTextBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.userName_materialTextBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal;
this.userName_materialTextBox.Depth = 0;
this.userName_materialTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
this.userName_materialTextBox.HideSelection = true;
this.userName_materialTextBox.LeadingIcon = null;
this.userName_materialTextBox.Location = new System.Drawing.Point(59, 90);
this.userName_materialTextBox.MaxLength = 32767;
this.userName_materialTextBox.MouseState = MaterialSkin.MouseState.OUT;
this.userName_materialTextBox.Name = "userName_materialTextBox";
this.userName_materialTextBox.PasswordChar = '\0';
this.userName_materialTextBox.PrefixSuffixText = null;
this.userName_materialTextBox.ReadOnly = false;
this.userName_materialTextBox.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.userName_materialTextBox.SelectedText = "";
this.userName_materialTextBox.SelectionLength = 0;
this.userName_materialTextBox.SelectionStart = 0;
this.userName_materialTextBox.ShortcutsEnabled = true;
this.userName_materialTextBox.Size = new System.Drawing.Size(342, 48);
this.userName_materialTextBox.TabIndex = 0;
this.userName_materialTextBox.TabStop = false;
this.userName_materialTextBox.Text = "User Name";
this.userName_materialTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
this.userName_materialTextBox.TrailingIcon = null;
this.userName_materialTextBox.UseSystemPasswordChar = false;
this.userName_materialTextBox.Click += new System.EventHandler(this.userName_materialTextBox_Click);
//
// password_materialTextBox
//
this.password_materialTextBox.AnimateReadOnly = false;
this.password_materialTextBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.password_materialTextBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal;
this.password_materialTextBox.Depth = 0;
this.password_materialTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
this.password_materialTextBox.HideSelection = true;
this.password_materialTextBox.LeadingIcon = null;
this.password_materialTextBox.Location = new System.Drawing.Point(59, 158);
this.password_materialTextBox.MaxLength = 32767;
this.password_materialTextBox.MouseState = MaterialSkin.MouseState.OUT;
this.password_materialTextBox.Name = "password_materialTextBox";
this.password_materialTextBox.PasswordChar = '*';
this.password_materialTextBox.PrefixSuffixText = null;
this.password_materialTextBox.ReadOnly = false;
this.password_materialTextBox.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.password_materialTextBox.SelectedText = "";
this.password_materialTextBox.SelectionLength = 0;
this.password_materialTextBox.SelectionStart = 0;
this.password_materialTextBox.ShortcutsEnabled = true;
this.password_materialTextBox.Size = new System.Drawing.Size(342, 48);
this.password_materialTextBox.TabIndex = 1;
this.password_materialTextBox.TabStop = false;
this.password_materialTextBox.Text = "Password";
this.password_materialTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
this.password_materialTextBox.TrailingIcon = null;
this.password_materialTextBox.UseSystemPasswordChar = false;
this.password_materialTextBox.Click += new System.EventHandler(this.password_materialTextBox_Click);
//
// Login_materialButton
//
this.Login_materialButton.AutoSize = false;
this.Login_materialButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.Login_materialButton.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.Login_materialButton.Depth = 0;
this.Login_materialButton.HighEmphasis = true;
this.Login_materialButton.Icon = null;
this.Login_materialButton.Location = new System.Drawing.Point(59, 256);
this.Login_materialButton.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
this.Login_materialButton.MouseState = MaterialSkin.MouseState.HOVER;
this.Login_materialButton.Name = "Login_materialButton";
this.Login_materialButton.NoAccentTextColor = System.Drawing.Color.Empty;
this.Login_materialButton.Size = new System.Drawing.Size(147, 36);
this.Login_materialButton.TabIndex = 2;
this.Login_materialButton.Text = "Login";
this.Login_materialButton.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.Login_materialButton.UseAccentColor = false;
this.Login_materialButton.UseVisualStyleBackColor = true;
this.Login_materialButton.Click += new System.EventHandler(this.Login_materialButton_Click);
//
// SIGNIN_materialButton
//
this.SIGNIN_materialButton.AutoSize = false;
this.SIGNIN_materialButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.SIGNIN_materialButton.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.SIGNIN_materialButton.Depth = 0;
this.SIGNIN_materialButton.HighEmphasis = true;
this.SIGNIN_materialButton.Icon = null;
this.SIGNIN_materialButton.Location = new System.Drawing.Point(254, 256);
this.SIGNIN_materialButton.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
this.SIGNIN_materialButton.MouseState = MaterialSkin.MouseState.HOVER;
this.SIGNIN_materialButton.Name = "SIGNIN_materialButton";
this.SIGNIN_materialButton.NoAccentTextColor = System.Drawing.Color.Empty;
this.SIGNIN_materialButton.Size = new System.Drawing.Size(147, 36);
this.SIGNIN_materialButton.TabIndex = 3;
this.SIGNIN_materialButton.Text = "Sign In";
this.SIGNIN_materialButton.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.SIGNIN_materialButton.UseAccentColor = false;
this.SIGNIN_materialButton.UseVisualStyleBackColor = true;
this.SIGNIN_materialButton.Click += new System.EventHandler(this.SIGNIN_materialButton_Click);
//
// rememberme_materialCheckbox
//
this.rememberme_materialCheckbox.AutoSize = true;
this.rememberme_materialCheckbox.Depth = 0;
this.rememberme_materialCheckbox.Location = new System.Drawing.Point(59, 213);
this.rememberme_materialCheckbox.Margin = new System.Windows.Forms.Padding(0);
this.rememberme_materialCheckbox.MouseLocation = new System.Drawing.Point(-1, -1);
this.rememberme_materialCheckbox.MouseState = MaterialSkin.MouseState.HOVER;
this.rememberme_materialCheckbox.Name = "rememberme_materialCheckbox";
this.rememberme_materialCheckbox.ReadOnly = false;
this.rememberme_materialCheckbox.Ripple = true;
this.rememberme_materialCheckbox.Size = new System.Drawing.Size(137, 37);
this.rememberme_materialCheckbox.TabIndex = 4;
this.rememberme_materialCheckbox.Text = "Remember Me";
this.rememberme_materialCheckbox.UseVisualStyleBackColor = true;
//
// LoginForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(462, 318);
this.Controls.Add(this.rememberme_materialCheckbox);
this.Controls.Add(this.SIGNIN_materialButton);
this.Controls.Add(this.Login_materialButton);
this.Controls.Add(this.password_materialTextBox);
this.Controls.Add(this.userName_materialTextBox);
this.Name = "LoginForm";
this.Text = "Login";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private MaterialSkin.Controls.MaterialTextBox2 userName_materialTextBox;
private MaterialSkin.Controls.MaterialTextBox2 password_materialTextBox;
private MaterialSkin.Controls.MaterialButton Login_materialButton;
private MaterialSkin.Controls.MaterialButton SIGNIN_materialButton;
private MaterialSkin.Controls.MaterialCheckbox rememberme_materialCheckbox;
}
}

349
src/PBAnaly/LoginForm.cs Normal file
View File

@ -0,0 +1,349 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MaterialSkin;
using MaterialSkin.Controls;
using Microsoft.VisualBasic.FileIO;
namespace PBAnaly
{
public partial class LoginForm : MaterialForm
{
private MaterialSkinManager materialSkinManager;
private SignInForm signInForm;
private MainForm mainForm;
public LoginForm()
{
InitializeComponent();
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint, true);
materialSkinManager = MaterialSkinManager.Instance; // 初始化 MaterialSkinManager 实例
materialSkinManager.AddFormToManage(this); // 将要应用 Material Design 的窗体添加到管理列表中
materialSkinManager.Theme = MaterialSkinManager.Themes.DARK; // Theme 属性用来设置整体的主题
materialSkinManager.ColorScheme = new ColorScheme(Primary.BlueGrey800, Primary.BlueGrey900, Primary.BlueGrey500, Accent.Indigo700, TextShade.WHITE); // ColorScheme 属性来设置配色方案
signInForm = null;
mainForm = null;
string LoginFile = Global.mDataUser + "UserLogin.csv";
if (File.Exists(LoginFile))
ReadCsv_Per(LoginFile);
this.FormClosing += LoginForm_FormClosing;
}
private void userName_materialTextBox_Click(object sender, EventArgs e)
{
userName_materialTextBox.Text = "";
}
private void password_materialTextBox_Click(object sender, EventArgs e)
{
password_materialTextBox.Text = "";
password_materialTextBox.PasswordChar = '*';
password_materialTextBox.UseSystemPasswordChar = true;
}
private void SIGNIN_materialButton_Click(object sender, EventArgs e)
{
if (signInForm == null)
{
signInForm = new SignInForm(this);
signInForm.FormClosing += SignInForm_FormClosing;
signInForm.TopMost = true;
signInForm?.Show();
this.Visible = false;
//this.Close();
}
}
private void SignInForm_FormClosing(object sender, FormClosingEventArgs e)
{
signInForm?.Dispose();
signInForm = null;
}
private void LoginForm_FormClosing(object sender, FormClosingEventArgs e)
{
this?.Dispose();
this.Close();
}
private void Login_materialButton_Click(object sender, EventArgs e)
{
bool LoginSuccess = true;
string userName_str = userName_materialTextBox.Text;
string password_str = password_materialTextBox.Text;
List<UserInfo> loginUser = new List<UserInfo>();
if (string.IsNullOrEmpty(userName_str) || string.IsNullOrEmpty(password_str))
{
MessageBox.Show("User ID or Password is empty ,Please Check!!", "Login Error");
LoginSuccess = false;
}
if (!LoginSuccess)
{
return;
}
else
{
if (userName_str.Equals("admin") && password_str.Equals("000000"))
{
Autholity autholity = Autholity.admin;
if (mainForm == null)
{
mainForm = new MainForm(this, autholity, "admin");
mainForm.TopMost = true;
mainForm?.Show();
this.Close();
}
}
else
{
string FileName = Global.mDataUser + "UserInfo.csv";
if (!File.Exists(FileName))
{
MessageBox.Show("No signin User Data, please sign in first!!", "Login Error");
LoginSuccess = false;
}
else
{
var GetCurrentUserInfo = ReadCsv(FileName);
bool Find_Str = false;
bool Find_Password = false;
string Find_UserID = "";
Autholity Find_autholity = Autholity.Normal;
foreach (var item in GetCurrentUserInfo)
{
if (item.UserID.Equals(userName_str))
{
Find_Str = true;
if (item.Password.Equals(password_str))
{
Find_Password = true;
Find_UserID = item.UserID;
Find_autholity = item.autholity;
loginUser.Add(item);
}
}
}
if (!Find_Str && !Find_Password)
{
MessageBox.Show("This User ID hasn't been registered, please sign in first!!", "Login Error");
LoginSuccess = false;
}
else if (Find_Str && !Find_Password)
{
MessageBox.Show("Wrong ID or Password, please check!!", "Login Error");
LoginSuccess = false;
}
else if (!Find_Str && Find_Password)
{
MessageBox.Show("Wrong ID or Password, please check!!", "Login Error");
LoginSuccess = false;
}
else
{
LoginSuccess = true;
}
if (!LoginSuccess)
{
return;
}
else
{
//Login Success
//Save Login Information
string LoginFile = Global.mDataUser + "UserLogin.csv";
if (!File.Exists(FileName))
{
if (!Directory.Exists(Global.mDataUser))
{
Directory.CreateDirectory(Global.mDataUser);
}
}
WriteCsv(LoginFile, loginUser, rememberme_materialCheckbox.Checked);
// Save Log Information
Read_Write_Log read_Write_Log = new Read_Write_Log();
string SaveLogFile = read_Write_Log.LogFile;
List<Log> OldLog = new List<Log>();
if (File.Exists(SaveLogFile))
{
OldLog = read_Write_Log.ReadCsv(SaveLogFile);
}
string dateTime = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss");
OldLog.Add(new Log() { UserID = Find_UserID, ITEM = "登入", Description = "登入系统", Time = dateTime });
read_Write_Log.WriteCsv(SaveLogFile, OldLog);
if (mainForm == null)
{
mainForm = new MainForm(this, Find_autholity, Find_UserID);
mainForm.TopMost = false;
mainForm?.Show();
}
}
}
}
}
}
private List<UserInfo> ReadCsv_Per(string FilePath)
{
List<UserInfo> returnInfo = new List<UserInfo>();
using (TextFieldParser parser = new TextFieldParser(FilePath))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");
// Read and parse each line of the CSV file
try
{
while (!parser.EndOfData)
{
string[] fields = parser.ReadFields();
int count = 0;
Autholity autholity = Autholity.admin;
string UserId = "";
string Email = "";
string PassWord = "";
foreach (var item in fields)
{
if ((count % 5) == 0)
{
Enum.TryParse(item, out autholity);
}
else if ((count % 5) == 1)
{
UserId = item;
}
else if ((count % 5) == 2)
{
Email = item;
}
else if ((count % 5) == 3)
{
PassWord = item;
returnInfo.Add(new UserInfo() { autholity = autholity, UserID = UserId, E_Mail = Email, Password = PassWord });
}
else
{
bool.TryParse(item, out bool result);
if (result)
{
userName_materialTextBox.Text = UserId;
password_materialTextBox.Text = PassWord;
rememberme_materialCheckbox.Checked = true;
}
}
count++;
}
}
parser.Close();
return returnInfo;
}
catch
{
return null;
}
}
}
private List<UserInfo> ReadCsv(string FilePath)
{
List<UserInfo> returnInfo = new List<UserInfo>();
using (TextFieldParser parser = new TextFieldParser(FilePath))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");
// Read and parse each line of the CSV file
try
{
while (!parser.EndOfData)
{
string[] fields = parser.ReadFields();
int count = 0;
Autholity autholity = Autholity.admin;
string UserId = "";
string Email = "";
string PassWord = "";
foreach (var item in fields)
{
if ((count % 4) == 0)
{
Enum.TryParse(item, out autholity);
}
else if ((count % 4) == 1)
{
UserId = item;
}
else if ((count % 4) == 2)
{
Email = item;
}
else
{
PassWord = item;
returnInfo.Add(new UserInfo() { autholity = autholity, UserID = UserId, E_Mail = Email, Password = PassWord });
}
count++;
}
}
parser.Close();
return returnInfo;
}
catch
{
return null;
}
}
}
private void WriteCsv(string FilePath, List<UserInfo> userInfos, bool RememberOrNot)
{
using (var file = new StreamWriter(FilePath))
{
foreach (var item in userInfos)
{
file.WriteLineAsync($"{item.autholity},{item.UserID},{item.E_Mail},{item.Password},{RememberOrNot}");
}
file.Close();
}
}
}
}

120
src/PBAnaly/LoginForm.resx Normal file
View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

714
src/PBAnaly/MainForm.Designer.cs generated Normal file
View File

@ -0,0 +1,714 @@
namespace PBAnaly
{
partial class MainForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.metroPanel_RightTop = new MetroFramework.Controls.MetroPanel();
this.materialButton_log = new MaterialSkin.Controls.MaterialButton();
this.materialButton_setting = new MaterialSkin.Controls.MaterialButton();
this.materialButton_curveimage = new MaterialSkin.Controls.MaterialButton();
this.materialButton_analyzedata = new MaterialSkin.Controls.MaterialButton();
this.materialButton_outimage = new MaterialSkin.Controls.MaterialButton();
this.materialButton_LoadData = new MaterialSkin.Controls.MaterialButton();
this.materialButton_forward = new MaterialSkin.Controls.MaterialButton();
this.materialButton_return = new MaterialSkin.Controls.MaterialButton();
this.materialButton_save = new MaterialSkin.Controls.MaterialButton();
this.materialButton_inverse = new MaterialSkin.Controls.MaterialButton();
this.materialButton_resetImage = new MaterialSkin.Controls.MaterialButton();
this.materialButton_imageInfo = new MaterialSkin.Controls.MaterialButton();
this.materialButton_fakeColor = new MaterialSkin.Controls.MaterialButton();
this.materialButton_imageChange = new MaterialSkin.Controls.MaterialButton();
this.materialButton_changeFormSize = new MaterialSkin.Controls.MaterialButton();
this.materialButton_miniAnalyze = new MaterialSkin.Controls.MaterialButton();
this.materialButton_roiAnalyze = new MaterialSkin.Controls.MaterialButton();
this.materialButton_dotcounts = new MaterialSkin.Controls.MaterialButton();
this.materialButton_acidAnalyze = new MaterialSkin.Controls.MaterialButton();
this.materialButton_correction = new MaterialSkin.Controls.MaterialButton();
this.materialButton_imageProcess = new MaterialSkin.Controls.MaterialButton();
this.CompanyIcon_pictureBox = new System.Windows.Forms.PictureBox();
this.btnStartUpToolTip = new System.Windows.Forms.ToolTip(this.components);
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.tl_right_main_view = new System.Windows.Forms.TableLayoutPanel();
this.DataProcess_panel = new ReaLTaiizor.Controls.Panel();
this.flowLayoutPanel1 = new AntdUI.In.FlowLayoutPanel();
this.flowLayoutPanel2 = new AntdUI.In.FlowLayoutPanel();
this.pl_right = new ReaLTaiizor.Controls.Panel();
this.metroPanel_RightTop.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.CompanyIcon_pictureBox)).BeginInit();
this.tableLayoutPanel1.SuspendLayout();
this.tl_right_main_view.SuspendLayout();
this.flowLayoutPanel1.SuspendLayout();
this.flowLayoutPanel2.SuspendLayout();
this.SuspendLayout();
//
// metroPanel_RightTop
//
this.metroPanel_RightTop.BackColor = System.Drawing.SystemColors.ButtonShadow;
this.metroPanel_RightTop.Controls.Add(this.materialButton_log);
this.metroPanel_RightTop.Controls.Add(this.materialButton_setting);
this.metroPanel_RightTop.Controls.Add(this.materialButton_curveimage);
this.metroPanel_RightTop.Controls.Add(this.materialButton_analyzedata);
this.metroPanel_RightTop.Controls.Add(this.materialButton_outimage);
this.metroPanel_RightTop.Controls.Add(this.materialButton_LoadData);
this.metroPanel_RightTop.Dock = System.Windows.Forms.DockStyle.Fill;
this.metroPanel_RightTop.HorizontalScrollbarBarColor = true;
this.metroPanel_RightTop.HorizontalScrollbarHighlightOnWheel = false;
this.metroPanel_RightTop.HorizontalScrollbarSize = 7;
this.metroPanel_RightTop.Location = new System.Drawing.Point(210, 0);
this.metroPanel_RightTop.Margin = new System.Windows.Forms.Padding(0);
this.metroPanel_RightTop.Name = "metroPanel_RightTop";
this.metroPanel_RightTop.Size = new System.Drawing.Size(559, 55);
this.metroPanel_RightTop.TabIndex = 12;
this.metroPanel_RightTop.Theme = MetroFramework.MetroThemeStyle.Dark;
this.metroPanel_RightTop.UseCustomBackColor = true;
this.metroPanel_RightTop.VerticalScrollbarBarColor = true;
this.metroPanel_RightTop.VerticalScrollbarHighlightOnWheel = false;
this.metroPanel_RightTop.VerticalScrollbarSize = 7;
//
// materialButton_log
//
this.materialButton_log.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_log.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_log.Depth = 0;
this.materialButton_log.Dock = System.Windows.Forms.DockStyle.Left;
this.materialButton_log.HighEmphasis = true;
this.materialButton_log.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_log.Icon")));
this.materialButton_log.Location = new System.Drawing.Point(581, 0);
this.materialButton_log.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.materialButton_log.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_log.Name = "materialButton_log";
this.materialButton_log.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_log.Size = new System.Drawing.Size(113, 55);
this.materialButton_log.TabIndex = 19;
this.materialButton_log.Text = "操作日志";
this.materialButton_log.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton_log.UseAccentColor = false;
this.materialButton_log.UseVisualStyleBackColor = true;
this.materialButton_log.Click += new System.EventHandler(this.materialButton_log_Click);
//
// materialButton_setting
//
this.materialButton_setting.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_setting.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_setting.Depth = 0;
this.materialButton_setting.Dock = System.Windows.Forms.DockStyle.Left;
this.materialButton_setting.HighEmphasis = true;
this.materialButton_setting.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_setting.Icon")));
this.materialButton_setting.Location = new System.Drawing.Point(468, 0);
this.materialButton_setting.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.materialButton_setting.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_setting.Name = "materialButton_setting";
this.materialButton_setting.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_setting.Size = new System.Drawing.Size(113, 55);
this.materialButton_setting.TabIndex = 18;
this.materialButton_setting.Text = "系统设置";
this.materialButton_setting.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton_setting.UseAccentColor = false;
this.materialButton_setting.UseVisualStyleBackColor = true;
this.materialButton_setting.Click += new System.EventHandler(this.materialButton_setting_Click);
//
// materialButton_curveimage
//
this.materialButton_curveimage.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_curveimage.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_curveimage.Depth = 0;
this.materialButton_curveimage.Dock = System.Windows.Forms.DockStyle.Left;
this.materialButton_curveimage.Enabled = false;
this.materialButton_curveimage.HighEmphasis = true;
this.materialButton_curveimage.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_curveimage.Icon")));
this.materialButton_curveimage.Location = new System.Drawing.Point(339, 0);
this.materialButton_curveimage.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.materialButton_curveimage.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_curveimage.Name = "materialButton_curveimage";
this.materialButton_curveimage.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_curveimage.Size = new System.Drawing.Size(129, 55);
this.materialButton_curveimage.TabIndex = 17;
this.materialButton_curveimage.Text = "泳道波形图";
this.materialButton_curveimage.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton_curveimage.UseAccentColor = false;
this.materialButton_curveimage.UseVisualStyleBackColor = true;
this.materialButton_curveimage.Click += new System.EventHandler(this.materialButton_curveimage_Click);
//
// materialButton_analyzedata
//
this.materialButton_analyzedata.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_analyzedata.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_analyzedata.Depth = 0;
this.materialButton_analyzedata.Dock = System.Windows.Forms.DockStyle.Left;
this.materialButton_analyzedata.Enabled = false;
this.materialButton_analyzedata.HighEmphasis = true;
this.materialButton_analyzedata.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_analyzedata.Icon")));
this.materialButton_analyzedata.Location = new System.Drawing.Point(226, 0);
this.materialButton_analyzedata.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.materialButton_analyzedata.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_analyzedata.Name = "materialButton_analyzedata";
this.materialButton_analyzedata.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_analyzedata.Size = new System.Drawing.Size(113, 55);
this.materialButton_analyzedata.TabIndex = 16;
this.materialButton_analyzedata.Text = "分析数据";
this.materialButton_analyzedata.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton_analyzedata.UseAccentColor = false;
this.materialButton_analyzedata.UseVisualStyleBackColor = true;
this.materialButton_analyzedata.Click += new System.EventHandler(this.materialButton_analyzedata_Click);
//
// materialButton_outimage
//
this.materialButton_outimage.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_outimage.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_outimage.Depth = 0;
this.materialButton_outimage.Dock = System.Windows.Forms.DockStyle.Left;
this.materialButton_outimage.Enabled = false;
this.materialButton_outimage.HighEmphasis = true;
this.materialButton_outimage.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_outimage.Icon")));
this.materialButton_outimage.Location = new System.Drawing.Point(113, 0);
this.materialButton_outimage.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.materialButton_outimage.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_outimage.Name = "materialButton_outimage";
this.materialButton_outimage.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_outimage.Size = new System.Drawing.Size(113, 55);
this.materialButton_outimage.TabIndex = 15;
this.materialButton_outimage.Text = "导出图像";
this.materialButton_outimage.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton_outimage.UseAccentColor = false;
this.materialButton_outimage.UseVisualStyleBackColor = true;
this.materialButton_outimage.Click += new System.EventHandler(this.materialButton_outimage_Click);
//
// materialButton_LoadData
//
this.materialButton_LoadData.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_LoadData.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_LoadData.Depth = 0;
this.materialButton_LoadData.Dock = System.Windows.Forms.DockStyle.Left;
this.materialButton_LoadData.Enabled = false;
this.materialButton_LoadData.HighEmphasis = true;
this.materialButton_LoadData.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_LoadData.Icon")));
this.materialButton_LoadData.Location = new System.Drawing.Point(0, 0);
this.materialButton_LoadData.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.materialButton_LoadData.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_LoadData.Name = "materialButton_LoadData";
this.materialButton_LoadData.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_LoadData.Size = new System.Drawing.Size(113, 55);
this.materialButton_LoadData.TabIndex = 14;
this.materialButton_LoadData.Text = "加载数据";
this.materialButton_LoadData.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton_LoadData.UseAccentColor = false;
this.materialButton_LoadData.UseVisualStyleBackColor = true;
this.materialButton_LoadData.Click += new System.EventHandler(this.materialButton_LoadData_Click);
//
// materialButton_forward
//
this.materialButton_forward.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_forward.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_forward.Depth = 0;
this.materialButton_forward.HighEmphasis = true;
this.materialButton_forward.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_forward.Icon")));
this.materialButton_forward.Location = new System.Drawing.Point(448, 0);
this.materialButton_forward.Margin = new System.Windows.Forms.Padding(0);
this.materialButton_forward.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_forward.Name = "materialButton_forward";
this.materialButton_forward.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_forward.Size = new System.Drawing.Size(64, 36);
this.materialButton_forward.TabIndex = 23;
this.materialButton_forward.Text = " ";
this.materialButton_forward.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Text;
this.materialButton_forward.UseAccentColor = false;
this.materialButton_forward.UseVisualStyleBackColor = true;
this.materialButton_forward.MouseMove += new System.Windows.Forms.MouseEventHandler(this.materialButton_forward_MouseMove);
//
// materialButton_return
//
this.materialButton_return.Anchor = System.Windows.Forms.AnchorStyles.None;
this.materialButton_return.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_return.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_return.Depth = 0;
this.materialButton_return.HighEmphasis = true;
this.materialButton_return.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_return.Icon")));
this.materialButton_return.Location = new System.Drawing.Point(0, 36);
this.materialButton_return.Margin = new System.Windows.Forms.Padding(0);
this.materialButton_return.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_return.Name = "materialButton_return";
this.materialButton_return.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_return.Size = new System.Drawing.Size(64, 36);
this.materialButton_return.TabIndex = 22;
this.materialButton_return.Text = " ";
this.materialButton_return.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Text;
this.materialButton_return.UseAccentColor = false;
this.materialButton_return.UseVisualStyleBackColor = true;
this.materialButton_return.MouseMove += new System.Windows.Forms.MouseEventHandler(this.materialButton_return_MouseMove);
//
// materialButton_save
//
this.materialButton_save.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_save.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_save.Depth = 0;
this.materialButton_save.HighEmphasis = true;
this.materialButton_save.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_save.Icon")));
this.materialButton_save.Location = new System.Drawing.Point(384, 0);
this.materialButton_save.Margin = new System.Windows.Forms.Padding(0);
this.materialButton_save.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_save.Name = "materialButton_save";
this.materialButton_save.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_save.Size = new System.Drawing.Size(64, 36);
this.materialButton_save.TabIndex = 21;
this.materialButton_save.Text = " ";
this.materialButton_save.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Text;
this.materialButton_save.UseAccentColor = false;
this.materialButton_save.UseVisualStyleBackColor = true;
this.materialButton_save.MouseMove += new System.Windows.Forms.MouseEventHandler(this.materialButton_save_MouseMove);
//
// materialButton_inverse
//
this.materialButton_inverse.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_inverse.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_inverse.Depth = 0;
this.materialButton_inverse.HighEmphasis = true;
this.materialButton_inverse.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_inverse.Icon")));
this.materialButton_inverse.Location = new System.Drawing.Point(320, 0);
this.materialButton_inverse.Margin = new System.Windows.Forms.Padding(0);
this.materialButton_inverse.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_inverse.Name = "materialButton_inverse";
this.materialButton_inverse.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_inverse.Size = new System.Drawing.Size(64, 36);
this.materialButton_inverse.TabIndex = 20;
this.materialButton_inverse.Text = " ";
this.materialButton_inverse.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Text;
this.materialButton_inverse.UseAccentColor = false;
this.materialButton_inverse.UseVisualStyleBackColor = true;
this.materialButton_inverse.MouseMove += new System.Windows.Forms.MouseEventHandler(this.materialButton_inverse_MouseMove);
//
// materialButton_resetImage
//
this.materialButton_resetImage.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_resetImage.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_resetImage.Depth = 0;
this.materialButton_resetImage.HighEmphasis = true;
this.materialButton_resetImage.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_resetImage.Icon")));
this.materialButton_resetImage.Location = new System.Drawing.Point(256, 0);
this.materialButton_resetImage.Margin = new System.Windows.Forms.Padding(0);
this.materialButton_resetImage.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_resetImage.Name = "materialButton_resetImage";
this.materialButton_resetImage.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_resetImage.Size = new System.Drawing.Size(64, 36);
this.materialButton_resetImage.TabIndex = 19;
this.materialButton_resetImage.Text = " ";
this.materialButton_resetImage.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Text;
this.materialButton_resetImage.UseAccentColor = false;
this.materialButton_resetImage.UseVisualStyleBackColor = true;
this.materialButton_resetImage.MouseMove += new System.Windows.Forms.MouseEventHandler(this.materialButton_resetImage_MouseMove);
//
// materialButton_imageInfo
//
this.materialButton_imageInfo.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_imageInfo.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_imageInfo.Depth = 0;
this.materialButton_imageInfo.HighEmphasis = true;
this.materialButton_imageInfo.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_imageInfo.Icon")));
this.materialButton_imageInfo.Location = new System.Drawing.Point(192, 0);
this.materialButton_imageInfo.Margin = new System.Windows.Forms.Padding(0);
this.materialButton_imageInfo.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_imageInfo.Name = "materialButton_imageInfo";
this.materialButton_imageInfo.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_imageInfo.Size = new System.Drawing.Size(64, 36);
this.materialButton_imageInfo.TabIndex = 18;
this.materialButton_imageInfo.Text = " ";
this.materialButton_imageInfo.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Text;
this.materialButton_imageInfo.UseAccentColor = false;
this.materialButton_imageInfo.UseVisualStyleBackColor = true;
this.materialButton_imageInfo.Click += new System.EventHandler(this.materialButton_imageInfo_Click);
this.materialButton_imageInfo.MouseMove += new System.Windows.Forms.MouseEventHandler(this.materialButton_imageInfo_MouseMove);
//
// materialButton_fakeColor
//
this.materialButton_fakeColor.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_fakeColor.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_fakeColor.Depth = 0;
this.materialButton_fakeColor.HighEmphasis = true;
this.materialButton_fakeColor.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_fakeColor.Icon")));
this.materialButton_fakeColor.Location = new System.Drawing.Point(128, 0);
this.materialButton_fakeColor.Margin = new System.Windows.Forms.Padding(0);
this.materialButton_fakeColor.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_fakeColor.Name = "materialButton_fakeColor";
this.materialButton_fakeColor.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_fakeColor.Size = new System.Drawing.Size(64, 36);
this.materialButton_fakeColor.TabIndex = 17;
this.materialButton_fakeColor.Text = " ";
this.materialButton_fakeColor.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Text;
this.materialButton_fakeColor.UseAccentColor = false;
this.materialButton_fakeColor.UseVisualStyleBackColor = true;
this.materialButton_fakeColor.MouseMove += new System.Windows.Forms.MouseEventHandler(this.materialButton_fakeColor_MouseMove);
//
// materialButton_imageChange
//
this.materialButton_imageChange.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_imageChange.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_imageChange.Depth = 0;
this.materialButton_imageChange.HighEmphasis = true;
this.materialButton_imageChange.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_imageChange.Icon")));
this.materialButton_imageChange.Location = new System.Drawing.Point(64, 0);
this.materialButton_imageChange.Margin = new System.Windows.Forms.Padding(0);
this.materialButton_imageChange.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_imageChange.Name = "materialButton_imageChange";
this.materialButton_imageChange.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_imageChange.Size = new System.Drawing.Size(64, 36);
this.materialButton_imageChange.TabIndex = 16;
this.materialButton_imageChange.Text = " ";
this.materialButton_imageChange.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Text;
this.materialButton_imageChange.UseAccentColor = false;
this.materialButton_imageChange.UseVisualStyleBackColor = true;
this.materialButton_imageChange.MouseMove += new System.Windows.Forms.MouseEventHandler(this.materialButton_imageChange_MouseMove);
//
// materialButton_changeFormSize
//
this.materialButton_changeFormSize.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_changeFormSize.BackColor = System.Drawing.SystemColors.ButtonShadow;
this.materialButton_changeFormSize.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_changeFormSize.Depth = 0;
this.materialButton_changeFormSize.HighEmphasis = true;
this.materialButton_changeFormSize.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_changeFormSize.Icon")));
this.materialButton_changeFormSize.Location = new System.Drawing.Point(0, 0);
this.materialButton_changeFormSize.Margin = new System.Windows.Forms.Padding(0);
this.materialButton_changeFormSize.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_changeFormSize.Name = "materialButton_changeFormSize";
this.materialButton_changeFormSize.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_changeFormSize.Size = new System.Drawing.Size(64, 36);
this.materialButton_changeFormSize.TabIndex = 15;
this.materialButton_changeFormSize.Tag = "123";
this.materialButton_changeFormSize.Text = " ";
this.materialButton_changeFormSize.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Text;
this.materialButton_changeFormSize.UseAccentColor = false;
this.materialButton_changeFormSize.UseVisualStyleBackColor = false;
this.materialButton_changeFormSize.Click += new System.EventHandler(this.materialButton_changeFormSize_Click);
this.materialButton_changeFormSize.MouseMove += new System.Windows.Forms.MouseEventHandler(this.materialButton_changeFormSize_MouseMove);
//
// materialButton_miniAnalyze
//
this.materialButton_miniAnalyze.AutoSize = false;
this.materialButton_miniAnalyze.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_miniAnalyze.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_miniAnalyze.Depth = 0;
this.materialButton_miniAnalyze.HighEmphasis = true;
this.materialButton_miniAnalyze.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_miniAnalyze.Icon")));
this.materialButton_miniAnalyze.Location = new System.Drawing.Point(4, 186);
this.materialButton_miniAnalyze.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
this.materialButton_miniAnalyze.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_miniAnalyze.Name = "materialButton_miniAnalyze";
this.materialButton_miniAnalyze.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_miniAnalyze.Size = new System.Drawing.Size(200, 48);
this.materialButton_miniAnalyze.TabIndex = 7;
this.materialButton_miniAnalyze.Text = "微孔版分析";
this.materialButton_miniAnalyze.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton_miniAnalyze.UseAccentColor = false;
this.materialButton_miniAnalyze.UseVisualStyleBackColor = true;
//
// materialButton_roiAnalyze
//
this.materialButton_roiAnalyze.AutoSize = false;
this.materialButton_roiAnalyze.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_roiAnalyze.CharacterCasing = MaterialSkin.Controls.MaterialButton.CharacterCasingEnum.Normal;
this.materialButton_roiAnalyze.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_roiAnalyze.Depth = 0;
this.materialButton_roiAnalyze.HighEmphasis = true;
this.materialButton_roiAnalyze.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_roiAnalyze.Icon")));
this.materialButton_roiAnalyze.Location = new System.Drawing.Point(4, 126);
this.materialButton_roiAnalyze.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
this.materialButton_roiAnalyze.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_roiAnalyze.Name = "materialButton_roiAnalyze";
this.materialButton_roiAnalyze.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_roiAnalyze.Size = new System.Drawing.Size(200, 48);
this.materialButton_roiAnalyze.TabIndex = 6;
this.materialButton_roiAnalyze.Text = "ROIs分析";
this.materialButton_roiAnalyze.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton_roiAnalyze.UseAccentColor = false;
this.materialButton_roiAnalyze.UseVisualStyleBackColor = true;
//
// materialButton_dotcounts
//
this.materialButton_dotcounts.AutoSize = false;
this.materialButton_dotcounts.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_dotcounts.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_dotcounts.Depth = 0;
this.materialButton_dotcounts.HighEmphasis = true;
this.materialButton_dotcounts.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_dotcounts.Icon")));
this.materialButton_dotcounts.Location = new System.Drawing.Point(4, 246);
this.materialButton_dotcounts.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
this.materialButton_dotcounts.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_dotcounts.Name = "materialButton_dotcounts";
this.materialButton_dotcounts.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_dotcounts.Size = new System.Drawing.Size(200, 48);
this.materialButton_dotcounts.TabIndex = 8;
this.materialButton_dotcounts.Text = "菌落计数";
this.materialButton_dotcounts.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton_dotcounts.UseAccentColor = false;
this.materialButton_dotcounts.UseVisualStyleBackColor = true;
//
// materialButton_acidAnalyze
//
this.materialButton_acidAnalyze.AutoSize = false;
this.materialButton_acidAnalyze.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_acidAnalyze.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_acidAnalyze.Depth = 0;
this.materialButton_acidAnalyze.HighEmphasis = true;
this.materialButton_acidAnalyze.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_acidAnalyze.Icon")));
this.materialButton_acidAnalyze.Location = new System.Drawing.Point(4, 66);
this.materialButton_acidAnalyze.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
this.materialButton_acidAnalyze.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_acidAnalyze.Name = "materialButton_acidAnalyze";
this.materialButton_acidAnalyze.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_acidAnalyze.Size = new System.Drawing.Size(200, 48);
this.materialButton_acidAnalyze.TabIndex = 5;
this.materialButton_acidAnalyze.Text = "泳道分析";
this.materialButton_acidAnalyze.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton_acidAnalyze.UseAccentColor = false;
this.materialButton_acidAnalyze.UseVisualStyleBackColor = true;
//
// materialButton_correction
//
this.materialButton_correction.AutoSize = false;
this.materialButton_correction.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_correction.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_correction.Depth = 0;
this.materialButton_correction.HighEmphasis = true;
this.materialButton_correction.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_correction.Icon")));
this.materialButton_correction.Location = new System.Drawing.Point(4, 306);
this.materialButton_correction.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
this.materialButton_correction.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_correction.Name = "materialButton_correction";
this.materialButton_correction.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_correction.Size = new System.Drawing.Size(200, 48);
this.materialButton_correction.TabIndex = 9;
this.materialButton_correction.Text = "蛋白归一化";
this.materialButton_correction.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton_correction.UseAccentColor = false;
this.materialButton_correction.UseVisualStyleBackColor = true;
//
// materialButton_imageProcess
//
this.materialButton_imageProcess.AutoSize = false;
this.materialButton_imageProcess.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_imageProcess.BackColor = System.Drawing.SystemColors.Control;
this.materialButton_imageProcess.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_imageProcess.Depth = 0;
this.materialButton_imageProcess.Font = new System.Drawing.Font("宋体", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.materialButton_imageProcess.HighEmphasis = true;
this.materialButton_imageProcess.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_imageProcess.Icon")));
this.materialButton_imageProcess.Location = new System.Drawing.Point(4, 6);
this.materialButton_imageProcess.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
this.materialButton_imageProcess.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_imageProcess.Name = "materialButton_imageProcess";
this.materialButton_imageProcess.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_imageProcess.Size = new System.Drawing.Size(200, 48);
this.materialButton_imageProcess.TabIndex = 4;
this.materialButton_imageProcess.Text = "图像处理";
this.materialButton_imageProcess.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.materialButton_imageProcess.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton_imageProcess.UseAccentColor = false;
this.materialButton_imageProcess.UseVisualStyleBackColor = false;
this.materialButton_imageProcess.Click += new System.EventHandler(this.materialButton_imageProcess_Click);
//
// CompanyIcon_pictureBox
//
this.CompanyIcon_pictureBox.BackColor = System.Drawing.Color.Transparent;
this.CompanyIcon_pictureBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.CompanyIcon_pictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.CompanyIcon_pictureBox.Image = global::PBAnaly.Properties.Resources.稿_画板_1_副本2;
this.CompanyIcon_pictureBox.Location = new System.Drawing.Point(3, 3);
this.CompanyIcon_pictureBox.Name = "CompanyIcon_pictureBox";
this.tableLayoutPanel1.SetRowSpan(this.CompanyIcon_pictureBox, 2);
this.CompanyIcon_pictureBox.Size = new System.Drawing.Size(204, 80);
this.CompanyIcon_pictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.CompanyIcon_pictureBox.TabIndex = 16;
this.CompanyIcon_pictureBox.TabStop = false;
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 3;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 210F));
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, 328F));
this.tableLayoutPanel1.Controls.Add(this.tl_right_main_view, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.metroPanel_RightTop, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.CompanyIcon_pictureBox, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.flowLayoutPanel1, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.flowLayoutPanel2, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.pl_right, 2, 1);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 24);
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(2);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 3;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 55F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 31F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(1097, 581);
this.tableLayoutPanel1.TabIndex = 18;
//
// tl_right_main_view
//
this.tl_right_main_view.ColumnCount = 2;
this.tl_right_main_view.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tl_right_main_view.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 324F));
this.tl_right_main_view.Controls.Add(this.DataProcess_panel, 0, 0);
this.tl_right_main_view.Dock = System.Windows.Forms.DockStyle.Fill;
this.tl_right_main_view.Location = new System.Drawing.Point(210, 86);
this.tl_right_main_view.Margin = new System.Windows.Forms.Padding(0);
this.tl_right_main_view.Name = "tl_right_main_view";
this.tl_right_main_view.RowCount = 2;
this.tl_right_main_view.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tl_right_main_view.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tl_right_main_view.Size = new System.Drawing.Size(559, 495);
this.tl_right_main_view.TabIndex = 0;
//
// DataProcess_panel
//
this.DataProcess_panel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(51)))), ((int)(((byte)(63)))));
this.tl_right_main_view.SetColumnSpan(this.DataProcess_panel, 2);
this.DataProcess_panel.Dock = System.Windows.Forms.DockStyle.Fill;
this.DataProcess_panel.EdgeColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(41)))), ((int)(((byte)(50)))));
this.DataProcess_panel.Location = new System.Drawing.Point(3, 3);
this.DataProcess_panel.Name = "DataProcess_panel";
this.DataProcess_panel.Padding = new System.Windows.Forms.Padding(5);
this.tl_right_main_view.SetRowSpan(this.DataProcess_panel, 2);
this.DataProcess_panel.Size = new System.Drawing.Size(553, 489);
this.DataProcess_panel.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
this.DataProcess_panel.TabIndex = 19;
this.DataProcess_panel.Text = "panel1";
//
// flowLayoutPanel1
//
this.flowLayoutPanel1.Controls.Add(this.materialButton_imageProcess);
this.flowLayoutPanel1.Controls.Add(this.materialButton_acidAnalyze);
this.flowLayoutPanel1.Controls.Add(this.materialButton_roiAnalyze);
this.flowLayoutPanel1.Controls.Add(this.materialButton_miniAnalyze);
this.flowLayoutPanel1.Controls.Add(this.materialButton_dotcounts);
this.flowLayoutPanel1.Controls.Add(this.materialButton_correction);
this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
this.flowLayoutPanel1.Location = new System.Drawing.Point(2, 88);
this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(2);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
this.flowLayoutPanel1.Size = new System.Drawing.Size(206, 491);
this.flowLayoutPanel1.TabIndex = 18;
//
// flowLayoutPanel2
//
this.flowLayoutPanel2.BackColor = System.Drawing.SystemColors.ButtonShadow;
this.flowLayoutPanel2.Controls.Add(this.materialButton_changeFormSize);
this.flowLayoutPanel2.Controls.Add(this.materialButton_imageChange);
this.flowLayoutPanel2.Controls.Add(this.materialButton_fakeColor);
this.flowLayoutPanel2.Controls.Add(this.materialButton_imageInfo);
this.flowLayoutPanel2.Controls.Add(this.materialButton_resetImage);
this.flowLayoutPanel2.Controls.Add(this.materialButton_inverse);
this.flowLayoutPanel2.Controls.Add(this.materialButton_save);
this.flowLayoutPanel2.Controls.Add(this.materialButton_forward);
this.flowLayoutPanel2.Controls.Add(this.materialButton_return);
this.flowLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.flowLayoutPanel2.Location = new System.Drawing.Point(210, 55);
this.flowLayoutPanel2.Margin = new System.Windows.Forms.Padding(0);
this.flowLayoutPanel2.Name = "flowLayoutPanel2";
this.flowLayoutPanel2.Size = new System.Drawing.Size(559, 31);
this.flowLayoutPanel2.TabIndex = 19;
//
// pl_right
//
this.pl_right.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(51)))), ((int)(((byte)(63)))));
this.pl_right.Dock = System.Windows.Forms.DockStyle.Fill;
this.pl_right.EdgeColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(41)))), ((int)(((byte)(50)))));
this.pl_right.Location = new System.Drawing.Point(771, 57);
this.pl_right.Margin = new System.Windows.Forms.Padding(2);
this.pl_right.Name = "pl_right";
this.pl_right.Padding = new System.Windows.Forms.Padding(4);
this.tableLayoutPanel1.SetRowSpan(this.pl_right, 2);
this.pl_right.Size = new System.Drawing.Size(324, 522);
this.pl_right.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
this.pl_right.TabIndex = 20;
this.pl_right.Text = "panel1";
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoSize = true;
this.AutoValidate = System.Windows.Forms.AutoValidate.EnablePreventFocusChange;
this.ClientSize = new System.Drawing.Size(1103, 608);
this.Controls.Add(this.tableLayoutPanel1);
this.DrawerAutoHide = false;
this.FormStyle = MaterialSkin.Controls.MaterialForm.FormStyles.ActionBar_None;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "MainForm";
this.Padding = new System.Windows.Forms.Padding(3, 24, 3, 3);
this.Text = "MainForm";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.MainForm_FormClosed);
this.SizeChanged += new System.EventHandler(this.MainForm_SizeChanged);
this.metroPanel_RightTop.ResumeLayout(false);
this.metroPanel_RightTop.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.CompanyIcon_pictureBox)).EndInit();
this.tableLayoutPanel1.ResumeLayout(false);
this.tl_right_main_view.ResumeLayout(false);
this.flowLayoutPanel1.ResumeLayout(false);
this.flowLayoutPanel2.ResumeLayout(false);
this.flowLayoutPanel2.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private MetroFramework.Controls.MetroPanel metroPanel_RightTop;
private MaterialSkin.Controls.MaterialButton materialButton_LoadData;
private MaterialSkin.Controls.MaterialButton materialButton_log;
private MaterialSkin.Controls.MaterialButton materialButton_setting;
private MaterialSkin.Controls.MaterialButton materialButton_curveimage;
private MaterialSkin.Controls.MaterialButton materialButton_analyzedata;
private MaterialSkin.Controls.MaterialButton materialButton_outimage;
private MaterialSkin.Controls.MaterialButton materialButton_changeFormSize;
private MaterialSkin.Controls.MaterialButton materialButton_forward;
private MaterialSkin.Controls.MaterialButton materialButton_return;
private MaterialSkin.Controls.MaterialButton materialButton_save;
private MaterialSkin.Controls.MaterialButton materialButton_inverse;
private MaterialSkin.Controls.MaterialButton materialButton_resetImage;
private MaterialSkin.Controls.MaterialButton materialButton_imageInfo;
private MaterialSkin.Controls.MaterialButton materialButton_fakeColor;
private MaterialSkin.Controls.MaterialButton materialButton_imageChange;
private MaterialSkin.Controls.MaterialButton materialButton_miniAnalyze;
private MaterialSkin.Controls.MaterialButton materialButton_roiAnalyze;
private MaterialSkin.Controls.MaterialButton materialButton_dotcounts;
private MaterialSkin.Controls.MaterialButton materialButton_acidAnalyze;
private MaterialSkin.Controls.MaterialButton materialButton_correction;
private MaterialSkin.Controls.MaterialButton materialButton_imageProcess;
private System.Windows.Forms.PictureBox CompanyIcon_pictureBox;
private System.Windows.Forms.ToolTip btnStartUpToolTip;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private AntdUI.In.FlowLayoutPanel flowLayoutPanel1;
private AntdUI.In.FlowLayoutPanel flowLayoutPanel2;
private ReaLTaiizor.Controls.Panel pl_right;
private System.Windows.Forms.TableLayoutPanel tl_right_main_view;
private ReaLTaiizor.Controls.Panel DataProcess_panel;
}
}

843
src/PBAnaly/MainForm.cs Normal file
View File

@ -0,0 +1,843 @@
using Aspose.Pdf;
using MaterialSkin;
using MaterialSkin.Controls;
using OpenCvSharp.Flann;
using OpenTK;
using PBAnaly.Module;
using PBAnaly.Properties;
using PBAnaly.UI;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Threading;
using System.Windows.Forms;
using Resources = PBAnaly.Properties.Resources;
namespace PBAnaly
{
public partial class MainForm : MaterialForm
{
private MaterialSkinManager materialSkinManager;
private SettingForm settingForm;
private LoginForm loginForm;
private LogForm logForm;
private int FormGenerate_X;
private int FormGenerate_Y;
private string InnerUserID = "";
private string color_bar = "YellowHot";
System.Windows.Forms.TableLayoutPanel tlp_main_images;
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();
//InnerloginForm.Close();
loginForm = InnerloginForm;
loginForm.Visible = false;
//loginForm.Close();
loginForm = null;
UIInit();
InnerUserID = UserID;
FormGenerate_X = 0;
FormGenerate_Y = 0;
// initPanel();
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern int SendMessage(IntPtr hWnd, int wMsg, bool wParam, int lParm);
private const int WM_SETREDRAW = 11;
private void BeginUpdate(Control control)
{
SendMessage(control.Handle,WM_SETREDRAW,false,0);
}
private void EndUpdate(Control control)
{
SendMessage(control.Handle, WM_SETREDRAW, true, 0);
control.Refresh();
}
public void UIInit()
{
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint, true);
materialSkinManager = MaterialSkinManager.Instance; // 初始化 MaterialSkinManager 实例
materialSkinManager.AddFormToManage(this); // 将要应用 Material Design 的窗体添加到管理列表中
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)
{
if (sender is Button)
{
Button btn = sender as Button;
this.btnStartUpToolTip.SetToolTip(btn, "适配窗口");
}
}
private void materialButton_imageChange_MouseMove(object sender, MouseEventArgs e)
{
if (sender is Button)
{
Button btn = sender as Button;
this.btnStartUpToolTip.SetToolTip(btn, "图像变换");
}
}
private void materialButton_fakeColor_MouseMove(object sender, MouseEventArgs e)
{
if (sender is Button)
{
Button btn = sender as Button;
this.btnStartUpToolTip.SetToolTip(btn, "伪彩");
}
}
private void materialButton_imageInfo_MouseMove(object sender, MouseEventArgs e)
{
if (sender is Button)
{
Button btn = sender as Button;
this.btnStartUpToolTip.SetToolTip(btn, "图像信息");
}
}
private void materialButton_resetImage_MouseMove(object sender, MouseEventArgs e)
{
if (sender is Button)
{
Button btn = sender as Button;
this.btnStartUpToolTip.SetToolTip(btn, "重置原图");
}
}
private void materialButton_inverse_MouseMove(object sender, MouseEventArgs e)
{
if (sender is Button)
{
Button btn = sender as Button;
this.btnStartUpToolTip.SetToolTip(btn, "反值");
}
}
private void materialButton_save_MouseMove(object sender, MouseEventArgs e)
{
if (sender is Button)
{
Button btn = sender as Button;
this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + S 保存");
}
}
private void materialButton_return_MouseMove(object sender, MouseEventArgs e)
{
if (sender is Button)
{
Button btn = sender as Button;
this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + Z 撤銷");
}
}
private void materialButton_forward_MouseMove(object sender, MouseEventArgs e)
{
if (sender is Button)
{
Button btn = sender as Button;
this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + Y 重做");
}
}
private void MainForm_SizeChanged(object sender, EventArgs e)
{
}
private void materialButton_LoadData_Click(object sender, EventArgs e)
{
string selectedFilePath = "";
// 弹出选择图像的框
#region
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "TIF Files (*.tif)|*.tif|All files (*.*)|*.*"; // 设置文件筛选器
openFileDialog.Title = "Select a TIF File"; // 设置对话框标题
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
// 获取选中的文件路径
selectedFilePath = openFileDialog.FileName;
}
#endregion
if (selectedFilePath != "")
{
// Save Log Information
Read_Write_Log read_Write_Log = new Read_Write_Log();
string SaveLogFile = read_Write_Log.LogFile;
List<Log> OldLog = new List<Log>();
if (File.Exists(SaveLogFile))
{
OldLog = read_Write_Log.ReadCsv(SaveLogFile);
}
string dateTime = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss");
OldLog.Add(new Log() { UserID = InnerUserID, ITEM = "加载数据", Description = "加载数据", Time = dateTime });
read_Write_Log.WriteCsv(SaveLogFile, OldLog);
DataProcessForm frmEmbed = new DataProcessForm(materialSkinManager, selectedFilePath);
if (frmEmbed != null)
{
//frmEmbed.FormBorderStyle = FormBorderStyle.None; // 无边框
frmEmbed.TopLevel = false; // 不是最顶层窗体
DataProcess_panel.Controls.Add(frmEmbed); // 添加到 Panel中
FormGenerate_X = FormGenerate_X + 15;
FormGenerate_Y = FormGenerate_Y + 15;
frmEmbed.Location = new System.Drawing.Point(FormGenerate_X, FormGenerate_Y);
frmEmbed.Show(); // 显示
PBAnalyCommMannager.processForm = frmEmbed;
}
}
}
private void materialButton_setting_Click(object sender, EventArgs e)
{
//if (settingForm != null)
// return;
//settingForm = new SettingForm(materialSkinManager);
//settingForm.FormClosed += settingForm_FormClosed;
//settingForm.TopMost = true;
//settingForm.Show();
}
private void settingForm_FormClosed(object sender, FormClosedEventArgs e)
{
if (settingForm == null)
return;
settingForm.Dispose();
settingForm = null;
}
private void materialButton_curveimage_Click(object sender, EventArgs e)
{
if (PBAnalyCommMannager.processcurveAlg())
{
// Save Log Information
Read_Write_Log read_Write_Log = new Read_Write_Log();
string SaveLogFile = read_Write_Log.LogFile;
List<Log> OldLog = new List<Log>();
if (File.Exists(SaveLogFile))
{
OldLog = read_Write_Log.ReadCsv(SaveLogFile);
}
string dateTime = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss");
OldLog.Add(new Log() { UserID = InnerUserID, ITEM = "泳道波形图", Description = "操作泳道波形图", Time = dateTime });
read_Write_Log.WriteCsv(SaveLogFile, OldLog);
}
}
private void materialButton_analyzedata_Click(object sender, EventArgs e)
{
if (PBAnalyCommMannager.band_info == null)
return;
// Save Log Information
Read_Write_Log read_Write_Log = new Read_Write_Log();
string SaveLogFile = read_Write_Log.LogFile;
List<Log> OldLog = new List<Log>();
if (File.Exists(SaveLogFile))
{
OldLog = read_Write_Log.ReadCsv(SaveLogFile);
}
string dateTime = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss");
OldLog.Add(new Log() { UserID = InnerUserID, ITEM = "分析数据", Description = "分析数据", Time = dateTime });
read_Write_Log.WriteCsv(SaveLogFile, OldLog);
PBAnaly.UI.AnalyzeDataForm analyzeDataForm = new UI.AnalyzeDataForm(PBAnalyCommMannager.band_info);
analyzeDataForm.TopMost = true;
analyzeDataForm.Show();
}
private void materialButton_imageProcess_Click(object sender, EventArgs e)
{
string selectedFilePath = "";
// 弹出选择图像的框
#region
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "TIF Files (*.tif)|*.tif|All files (*.*)|*.*"; // 设置文件筛选器
openFileDialog.Title = "Select a TIF File"; // 设置对话框标题
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
// 获取选中的文件路径 只传入目录
selectedFilePath = Path.GetDirectoryName(openFileDialog.FileName);
}
#endregion
if (selectedFilePath != "")
{
if (ImageToolMannage.imageDataPath.TryGetValue(selectedFilePath, out var value))
{
return;
}
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();
//frmEmbed.RefreshUI();
}
initPanel();
}
}
private void materialButton_log_Click(object sender, EventArgs e)
{
if (logForm != null)
return;
logForm = new LogForm(materialSkinManager,InnerUserID);
logForm.FormClosed += LogForm_FormClosed;
logForm.TopMost = true;
logForm.Show();
}
private void LogForm_FormClosed(object sender, FormClosedEventArgs e)
{
if (logForm == null)
return;
logForm.Dispose();
logForm = null;
}
private void materialButton_outimage_Click(object sender, EventArgs e)
{
string datetime = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss");
string dir = string.Format(@"./{0}/", "Report");
if (!Directory.Exists(dir)) Directory.CreateDirectory(dir);
string savePDF = string.Format("{0}{1}_Report.pdf",dir,datetime);
// 初始化文檔對象
Document document = new Document();
// 添加頁面
Page page = document.Pages.Add();
// 向新頁面添加文本
page.Paragraphs.Add(new Aspose.Pdf.Text.TextFragment("Hello World!"));
// 保存PDF
document.Save(savePDF);
string ReportMesage = string.Format("Report Save at : {0}", savePDF);
MessageBox.Show(ReportMesage);
// Save Log Information
Read_Write_Log read_Write_Log = new Read_Write_Log();
string SaveLogFile = read_Write_Log.LogFile;
List<Log> OldLog = new List<Log>();
if (File.Exists(SaveLogFile))
{
OldLog = read_Write_Log.ReadCsv(SaveLogFile);
}
string dateTime = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss");
OldLog.Add(new Log() { UserID = InnerUserID, ITEM = "导出图像", Description = "导出图像", Time = dateTime });
read_Write_Log.WriteCsv(SaveLogFile, OldLog);
}
private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
{
System.Environment.Exit(0);
}
private void materialButton_imageInfo_Click(object sender, EventArgs e)
{
}
bool isGridView = false;
private void materialButton_changeFormSize_Click(object sender, EventArgs e)
{
//isGridView = isGridView == false ? true : false;
//initPanel();
#if true
//var forms = ImageToolMannage.imageDataPath.Values.ToList();
//int formCount = forms.Count;
//int rows, columns;
//// 根据窗体数量确定布局
//if (formCount == 1)
//{
// rows = 1;
// columns = 1;
//}
//else if (formCount == 2)
//{
// rows = 1;
// columns = 2;
//}
//else if (formCount == 3)
//{
// rows = 1;
// columns = 3;
//}
//else if (formCount == 4)
//{
// rows = 2;
// columns = 2;
//}
//else if (formCount == 5)
//{
// rows = 2;
// columns = 3;
//}
//else if (formCount == 6)
//{
// rows = 2;
// columns = 3;
//}
//else // formCount >= 7
//{
// rows = (int)Math.Ceiling(formCount / 2.0);
// columns = 2;
//}
//// 计算每个窗体的大小
//int formWidth = DataProcess_panel.Width / columns;
//int formHeight = DataProcess_panel.Height / rows;
//// 清除 DataProcess_panel 中已有的控件
//DataProcess_panel.Controls.Clear();
//// 调整每个窗体的位置和大小
//for (int i = 0; i < formCount; i++)
//{
// var form = forms[i];
// PictureBox pictureBox = new PictureBox();
// pictureBox.Image = form.GetPseuImage;
// int row = i / columns;
// int col = i % columns;
// pictureBox.Bounds = new System.Drawing.Rectangle(col * formWidth, row * formHeight, formWidth, formHeight);
// // 添加窗体到 Panel 中并显示
// DataProcess_panel.Controls.Add(pictureBox);
// pictureBox.Show();
//}
//COMMImageToolPaletteForm cOMMImageToolPaletteForm = new COMMImageToolPaletteForm(this);
//cOMMImageToolPaletteForm.TopLevel = false;
//cOMMImageToolPaletteForm.Dock = DockStyle.Fill;
//pl_right.Controls.Clear();
//pl_right.Controls.Add(cOMMImageToolPaletteForm);
//cOMMImageToolPaletteForm.Show();
int margin = 5;
int formCount = ImageToolMannage.imageDataPath.Count;
if (formCount == 0) return;
int columns = (int)Math.Ceiling(Math.Sqrt(formCount));
int rows = (int)Math.Ceiling((double)formCount / columns);
int formWidth = (DataProcess_panel.Width - (columns + 1) * margin) / columns;
int formHeight = (DataProcess_panel.Height - (rows + 1) * margin) / rows;
int totalWidth = columns * formWidth + (columns + 1) * margin;
int totalHeight = rows * formHeight + (rows + 1) * margin;
if (totalWidth > DataProcess_panel.Width)
{
formWidth = (DataProcess_panel.Width - (columns + 1) * margin) / columns;
}
if (totalHeight > DataProcess_panel.Height)
{
formHeight = (DataProcess_panel.Height - (rows + 1) * margin) / rows;
}
int index = 0;
foreach (var item in ImageToolMannage.imageDataPath)
{
int row = index / columns;
int col = index % columns;
int x = margin + col * (formWidth + margin);
int y = margin + row * (formHeight + margin);
var panel = item.Value;
panel.Size = new Size(formWidth, formHeight);
panel.Location = new System.Drawing.Point(x, y);
panel.TopLevel = false;
panel.FormBorderStyle = FormBorderStyle.None;
panel.Visible = true;
DataProcess_panel.Controls.Add(panel);
panel.Show();
panel.BringToFront();
index++;
}
#endif
}
}
}

2003
src/PBAnaly/MainForm.resx Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,166 @@
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing.Drawing2D;
using System.Drawing;
using AntdUI;
using System.Windows.Forms;
using OpenCvSharp;
using SixLabors.ImageSharp.Advanced;
using System.Runtime.InteropServices;
using Sunny.UI.Win32;
namespace PBAnaly.Module
{
public class DataRecordString
{
public int index { get; set; }
public string max { get; set; }
public string min { get; set; }
public string IOD { get; set; }
public string Count { get; set; }
public string AOD { get; set; }
}
public class DataRecord
{
public int index { get; set; }
public int max { get; set; }
public int min { get; set; }
public int IOD { get; set; }
public int Count { get; set; }
public float AOD { get; set; }
};
public static class ImageProcess
{
public static (int[] histogram, int minVal, int maxVal) CalculateHistogram(Image<L16> image)
{
int[] histogram = new int[65536]; // 16-bit image has values from 0 to 65535
int minVal = ushort.MaxValue;
int maxVal = ushort.MinValue;
// 使用MemoryGroup访问像素数据
var memoryGroup = image.GetPixelMemoryGroup();
var o = memoryGroup.ToArray().Max();
foreach (var memory in memoryGroup)
{
var span = memory.Span;
foreach (var pixel in span)
{
ushort pixelValue = pixel.PackedValue;
histogram[pixelValue]++; // 增加对应亮度值的计数
if (pixelValue < minVal)
minVal = pixelValue; // 更新最小值
if (pixelValue > maxVal)
maxVal = pixelValue; // 更新最大值
}
}
return (histogram, minVal, maxVal);
}
public static System.Drawing.Point GetRealImageCoordinates(PictureBox pictureBox, System.Drawing.Point mousePoint)
{
if (pictureBox.Image == null)
return mousePoint;
System.Drawing.Size imageSize = pictureBox.Image.Size;
System.Drawing.Size boxSize = pictureBox.ClientSize;
float imageAspectRatio = (float)imageSize.Width / imageSize.Height;
float boxAspectRatio = (float)boxSize.Width / boxSize.Height;
float scaleFactor = (pictureBox.SizeMode == PictureBoxSizeMode.Zoom) ?
(boxAspectRatio > imageAspectRatio ? (float)boxSize.Height / imageSize.Height : (float)boxSize.Width / imageSize.Width) :
(float)boxSize.Width / imageSize.Width; // StretchImage模式
// 图像在PictureBox内居中因此计算起始偏移
int imageX = (pictureBox.SizeMode == PictureBoxSizeMode.Zoom && boxAspectRatio > imageAspectRatio) ?
(boxSize.Width - (int)(imageSize.Width * scaleFactor)) / 2 : 0;
int imageY = (pictureBox.SizeMode == PictureBoxSizeMode.Zoom && boxAspectRatio < imageAspectRatio) ?
(boxSize.Height - (int)(imageSize.Height * scaleFactor)) / 2 : 0;
int realX = (int)((mousePoint.X - imageX) / scaleFactor);
int realY = (int)((mousePoint.Y - imageY) / scaleFactor);
return new System.Drawing.Point(realX, realY);
}
public static System.Drawing.Rectangle GetRealImageRectangle(PictureBox pictureBox, System.Drawing.Rectangle mouseRectangle)
{
if (pictureBox.Image == null)
return mouseRectangle;
// 获得矩形的左上角和右下角的坐标
System.Drawing.Point topLeft = new System.Drawing.Point(mouseRectangle.Left, mouseRectangle.Top);
System.Drawing.Point bottomRight = new System.Drawing.Point(mouseRectangle.Right, mouseRectangle.Bottom);
// 转换这些坐标
System.Drawing.Point realTopLeft = GetRealImageCoordinates(pictureBox, topLeft);
System.Drawing.Point realBottomRight = GetRealImageCoordinates(pictureBox, bottomRight);
// 计算新的矩形的宽度和高度
int width = realBottomRight.X - realTopLeft.X;
int height = realBottomRight.Y - realTopLeft.Y;
return new System.Drawing.Rectangle(realTopLeft.X, realTopLeft.Y, width, height);
}
// 将真实图像坐标转换为PictureBox控件坐标
public static System.Drawing.Point ConvertRealToPictureBoxCoordinates(PictureBox pictureBox, System.Drawing.Point realPoint)
{
if (pictureBox.Image == null)
return realPoint;
System.Drawing.Size imageSize = pictureBox.Image.Size;
System.Drawing.Size boxSize = pictureBox.ClientSize;
float imageAspectRatio = (float)imageSize.Width / imageSize.Height;
float boxAspectRatio = (float)boxSize.Width / boxSize.Height;
float scaleFactor = (pictureBox.SizeMode == PictureBoxSizeMode.Zoom) ?
(boxAspectRatio > imageAspectRatio ? (float)boxSize.Height / imageSize.Height : (float)boxSize.Width / imageSize.Width) :
1f; // 默认为1这里假设是StretchImage模式
int imageX = (pictureBox.SizeMode == PictureBoxSizeMode.Zoom && boxAspectRatio > imageAspectRatio) ?
(boxSize.Width - (int)(imageSize.Width * scaleFactor)) / 2 : 0;
int imageY = (pictureBox.SizeMode == PictureBoxSizeMode.Zoom && boxAspectRatio < imageAspectRatio) ?
(boxSize.Height - (int)(imageSize.Height * scaleFactor)) / 2 : 0;
int pictureBoxX = (int)(realPoint.X * scaleFactor) + imageX;
int pictureBoxY = (int)(realPoint.Y * scaleFactor) + imageY;
return new System.Drawing.Point(pictureBoxX, pictureBoxY);
}
// 将真实图像的矩形坐标转换为PictureBox控件的矩形坐标
public static System.Drawing.Rectangle ConvertRealToPictureBoxRectangle(PictureBox pictureBox, System.Drawing.Rectangle realRectangle)
{
if (pictureBox.Image == null)
return realRectangle;
System.Drawing.Point realTopLeft = new System.Drawing.Point(realRectangle.Left, realRectangle.Top);
System.Drawing.Point realBottomRight = new System.Drawing.Point(realRectangle.Right, realRectangle.Bottom);
System.Drawing.Point picBoxTopLeft = ConvertRealToPictureBoxCoordinates(pictureBox, realTopLeft);
System.Drawing.Point picBoxBottomRight = ConvertRealToPictureBoxCoordinates(pictureBox, realBottomRight);
return new System.Drawing.Rectangle(picBoxTopLeft.X, picBoxTopLeft.Y,
picBoxBottomRight.X - picBoxTopLeft.X,
picBoxBottomRight.Y - picBoxTopLeft.Y);
}
}
}

View File

@ -0,0 +1,37 @@

using OpenCvSharp.ImgHash;
using PBAnaly.UI;
using System.Collections.Generic;
namespace PBAnaly.Module
{
public static class ImageToolMannage
{
#region
public static bool lineDisON = false;
public static bool rectON = false;
public static bool linepolygonON = false;
public static bool linewandON = false;
public static bool circleON = false;
public static int color_min = 6000;
public static int color_max = 65534;
public static float alpha = 100;
public static ImagePanel imagePanel { get; set; }
public static ImagePanelUser imagePanelUser { get; set; }
public static ReaLTaiizor.Controls.Panel right_panel { get; set; }
public static int beta = 127;
public static double pixeltomm = 0.0825;
public static Dictionary<string, ImagePanel> imageDataPath = new Dictionary<string, ImagePanel>();
public static int RoiIndex = 0;
public static int CircleIndex = 0;
public static int Roi_w = 20;
public static int Roi_h = 20;
public static int Roi_r = 10;
#endregion
}
}

View File

@ -0,0 +1,144 @@
using OpenCvSharp;
using OpenCvSharp.Extensions;
using PBBiologyVC;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PBAnaly.Module
{
public class PBAnalyCommMannager
{
public static LaneChartForm laneChartForm = null;
public static DataProcessForm processForm = null;
public static List<RectVC> proteinRect = null;
public static List<_band_info> band_info = null;
//public List<ushort> land_data;
//public List<float> ydata;
//public List<float> xdata;
//public List<List<int>> band_point;
//public List<MolecularInfoVC> Minfo;
public struct band_infos
{
public float startX; // X作为筛选的必要条件 当鼠标进入x的范围就是进入某一个泳道,在根据y的范围判断是否在这个泳道里
public float endX;
public float startY;
public float endY;
public List<float> xdata;
public List<float> ydata;
public Scalar color;
public int thick;
public _band_info _Info;
}
public static bool processcurveAlg()
{
if (processForm == null) return false;
var image = processForm.getImage;
Mat whiteBackgroundImg = new Mat();
Scalar meanValue = Cv2.Mean(image);
if (meanValue[0] < 10000)
{
Cv2.BitwiseNot(image, whiteBackgroundImg);
}
else
{
whiteBackgroundImg = image.Clone();
}
Mat input_cn1 = new Mat();
whiteBackgroundImg.ConvertTo(input_cn1, MatType.CV_8U, 0.00390625);
byte[] byte_image = new byte[input_cn1.Width * input_cn1.Height];
ushort[] whiteBackgroundImg_image = new ushort[whiteBackgroundImg.Width * whiteBackgroundImg.Height];
int index = 0;
for (int i = 0; i < input_cn1.Rows; i++)
{
for (int j = 0; j < input_cn1.Cols; j++)
{
byte value = input_cn1.At<byte>(i, j); // 使用At方法访问数据
ushort value1 = whiteBackgroundImg.At<ushort>(i, j); // 使用At方法访问数据
byte_image[index] = value;
whiteBackgroundImg_image[index++] = value1;
}
}
PBBiology dd = new PBBiology();
proteinRect = new List<RectVC>();
band_info = new List<_band_info>();
unsafe
{
fixed (byte* p = byte_image)
{
proteinRect = dd.getProteinRectVC(p, (ushort)input_cn1.Width, (ushort)input_cn1.Height);
}
byte[] bytes = util.ConvertUShortArrayToByteArrayComplete(whiteBackgroundImg_image);
fixed (byte* p = bytes)
{
dd.getProteinBandsVC(p, 16, (ushort)input_cn1.Width, (ushort)input_cn1.Height, proteinRect, ref band_info);
}
dd.adjustBands(band_info, 10);
dd.molecularWeightResult(ref proteinRect, ref band_info);
}
Mat mat = new Mat();
if (input_cn1.Channels() == 1)
{
Cv2.CvtColor(input_cn1, mat, ColorConversionCodes.GRAY2BGR);
}
// 随机数生成器
Random random = new Random();
// 定义多个矩形的位置和大小
(int x, int y, int width, int height)[] rectangles = {
(100, 150, 200, 100),
(300, 200, 150, 90),
(50, 30, 180, 120),
// 添加更多矩形
};
List<PBAnalyCommMannager.band_infos> bands = new List<band_infos>();
index = 0;
foreach (var m in proteinRect)
{
Scalar color = new Scalar(random.Next(256), random.Next(256), random.Next(256)); // 随机RGB值
OpenCvSharp.Point rectStart = new OpenCvSharp.Point(m.X, m.Y);
OpenCvSharp.Point rectEnd = new OpenCvSharp.Point(m.X + m.Width, m.Y + m.Height);
band_infos _Infos = new band_infos();
_Infos.startX = rectStart.X;
_Infos.startY = rectStart.Y;
_Infos.endX = rectEnd.X;
_Infos.endY = rectEnd.Y;
_Infos.color = color;
_Infos.thick = 1;
_Infos._Info = band_info[index++];
bands.Add(_Infos);
}
processForm.SetBands = bands;
processForm.Draw();
if (laneChartForm == null)
laneChartForm = new LaneChartForm();
laneChartForm.TopMost = true;
laneChartForm.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
laneChartForm.Draw(bands[0]);
laneChartForm.Show();
return true;
}
}
}

499
src/PBAnaly/Module/util.cs Normal file
View File

@ -0,0 +1,499 @@
using OpenCvSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Formats.Bmp;
using System.IO;
using System.Drawing;
using Image = SixLabors.ImageSharp.Image;
using System.Net.NetworkInformation;
using System.Management;
namespace PBAnaly.Module
{
public class util
{
/// <summary>
/// 将16bit unshort 拆成2 个8bit
/// </summary>
/// <param name="ushortArray"></param>
/// <returns></returns>
public static byte[] ConvertUShortArrayToByteArrayComplete(ushort[] ushortArray)
{
// 创建一个byte数组长度是ushort数组的两倍
byte[] byteArray = new byte[ushortArray.Length * 2];
for (int i = 0, j = 0; i < ushortArray.Length; i++, j += 2)
{
// 高位byte
byteArray[j + 1] = (byte)(ushortArray[i] >> 8);
// 低位byte
byteArray[j] = (byte)(ushortArray[i] & 0xFF);
}
return byteArray;
}
/// <summary>
/// 数据转成mat
/// </summary>
/// <param name="imageData"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="type"></param>
/// <returns></returns>
public static Mat ConvertByteArrayToMat(byte[] imageData, int width, int height, MatType type)
{
Mat image = new Mat(height, width, type);
if (type == MatType.CV_8UC1)
{
Marshal.Copy(imageData, 0, image.Data, width * height);
}
else if (type == MatType.CV_16UC1)
{
Marshal.Copy(imageData, 0, image.Data, width * height * 2);
}
return image;
}
public static byte[] TiffTo16BitGrayByteArray(string filePath)
{
using (Image<L16> image = Image.Load<L16>(filePath))
{
int width = image.Width;
int height = image.Height;
byte[] pixels = new byte[width * height * sizeof(ushort)];
int index = 0;
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
ushort pixelValue = image[x, y].PackedValue;
BitConverter.GetBytes(pixelValue).CopyTo(pixels, index);
index += sizeof(ushort);
}
}
return pixels;
}
}
public static Image<L16> LoadTiffAsL16(string filePath)
{
// 加载图像并确保其为16位灰度图像
Image<L16> image = Image.Load<L16>(filePath);
return image;
}
public static byte[] ConvertL16ImageToByteArray(Image<L16> image)
{
int width = image.Width;
int height = image.Height;
byte[] pixels = new byte[width * height * sizeof(ushort)];
int index = 0;
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
// 直接访问每个像素的值并转换为 byte[]
ushort pixelValue = image[x, y].PackedValue;
BitConverter.GetBytes(pixelValue).CopyTo(pixels, index);
index += sizeof(ushort);
}
}
return pixels;
}
public static Bitmap ConvertL16ToBitmap(Image<L16> image)
{
using (var ms = new MemoryStream())
{
// 保存为 BMP 格式的内存流
image.Save(ms, new BmpEncoder());
ms.Position = 0; // 重置流的位置
return new Bitmap(ms);
}
}
public static Image<L16> ConvertByteArrayToL16Image(byte[] byteArray, int width, int height, int channels)
{
// 确保输入参数有效
if (channels != 1)
{
throw new ArgumentException("通道数必须为1适用于L16格式。");
}
// 创建一个新的Image<L16>对象
Image<L16> image = new Image<L16>(width, height);
// 填充图像数据
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
// 计算在字节数组中的位置
int pixelIndex = (y * width + x) * channels * sizeof(ushort);
// 确保byteArray足够大
if (pixelIndex + sizeof(ushort) > byteArray.Length)
{
throw new ArgumentException("字节数组长度不足以填充图像。");
}
// 从字节数组中读取16位灰度值
ushort pixelValue = BitConverter.ToUInt16(byteArray, pixelIndex);
image[x, y] = new L16(pixelValue);
}
}
return image;
}
public static Image<L16> ConvertL8ToL16Image(Image<L8> inputImage)
{
int width = inputImage.Width;
int height = inputImage.Height;
// 创建一个新的 Image<L16> 对象
Image<L16> outputImage = new Image<L16>(width, height);
// 遍历每个像素,将 L8 格式转换为 L16 格式
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
// 获取 L8 格式的像素值
byte pixelValueL8 = inputImage[x, y].PackedValue;
// 将 8 位值扩展为 16 位
ushort pixelValueL16 = (ushort)(pixelValueL8 << 8); // 例如,简单左移
// 设置 L16 图像的像素值
outputImage[x, y] = new L16(pixelValueL16);
}
}
return outputImage;
}
public static Image<L8> ConvertByteArrayToL8Image(byte[] byteArray, int width, int height, int channels)
{
// 验证通道数至少为1
if (channels < 1)
{
throw new ArgumentException("通道数必须至少为1。");
}
// 创建一个新的 Image<L8> 对象
Image<L8> image = new Image<L8>(Configuration.Default, width, height);
// 填充图像数据
int bytesPerSample = 1; // 每个样本每通道1字节
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
int baseIndex = (y * width + x) * channels * bytesPerSample;
if (channels == 1)
{
// 单通道灰度
byte grayValue = byteArray[baseIndex];
image[x, y] = new L8(grayValue);
}
else if (channels >= 3)
{
// 三通道RGB计算加权平均灰度值
float r = byteArray[baseIndex];
float g = byteArray[baseIndex + 1];
float b = byteArray[baseIndex + 2];
byte gray = (byte)(0.299 * r + 0.587 * g + 0.114 * b);
image[x, y] = new L8(gray);
}
}
}
return image;
}
public static Image<L16> ConvertByteArrayToL16Image(byte[] byteArray, int width, int height)
{
// 确保输入参数有效
if (byteArray.Length < width * height)
{
throw new ArgumentException("字节数组长度不足以填充图像。");
}
// 创建一个新的 Image<L16> 对象
Image<L16> image = new Image<L16>(width, height);
// 填充图像数据
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
// 获取 8 位的像素值
byte pixelValueL8 = byteArray[y * width + x];
// 将 8 位值扩展为 16 位
ushort pixelValueL16 = (ushort)(pixelValueL8 << 8); // 或者可以直接设置为 (ushort)pixelValueL8
// 设置到 L16 图像
image[x, y] = new L16(pixelValueL16);
}
}
return image;
}
public static Bitmap ConvertL8ImageToBitmap(Image<L8> image)
{
using (var ms = new MemoryStream())
{
// 将 Image<L8> 保存到内存流中,格式为 BMP
image.Save(ms, new BmpEncoder());
ms.Position = 0; // 重置流位置
// 使用内存流创建 Bitmap
return new Bitmap(ms);
}
}
public static Image<Rgb24> ConvertByteArrayToRgb24Image(byte[] byteArray, int width, int height, int channels)
{
// 验证通道数必须为3RGB
if (channels != 3)
{
throw new ArgumentException("通道数必须为3适用于RGB彩色图像。");
}
// 创建一个新的 Image<Rgb24> 对象
Image<Rgb24> image = new Image<Rgb24>(width, height);
// 填充图像数据
int bytesPerPixel = channels; // 每个像素的字节数为3R、G、B
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
// 计算当前像素在字节数组中的起始位置
int baseIndex = (y * width + x) * bytesPerPixel;
// 确保数组边界
if (baseIndex + 2 >= byteArray.Length)
{
throw new ArgumentException("字节数组长度不足以填充图像。");
}
// 提取 R、G、B 值
byte r = byteArray[baseIndex];
byte g = byteArray[baseIndex + 1];
byte b = byteArray[baseIndex + 2];
// 设置图像像素
image[x, y] = new Rgb24(r, g, b);
}
}
return image;
}
public static Bitmap ConvertRgb24ImageToBitmap(Image<Rgb24> image)
{
using (var ms = new MemoryStream())
{
// 将 Image<Rgb24> 保存到内存流中,格式为 BMP
image.Save(ms, new BmpEncoder());
ms.Position = 0; // 重置流位置
// 使用内存流创建 Bitmap
return new Bitmap(ms);
}
}
public static Bitmap ConvertRgba64ImageToBitmap(Image<Rgba64> image)
{
// 获取图像的宽度和高度
int width = image.Width;
int height = image.Height;
// 创建一个新的 Bitmap 对象
Bitmap bitmap = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
// 使用锁定的像素数据进行高效复制
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
// 获取当前像素的 RGBA 值
Rgba64 pixel = image[x, y];
// 将 Rgba64 的 16 位值转换为 8 位值
byte r = (byte)(pixel.R >> 8); // 右移8位转换为8位
byte g = (byte)(pixel.G >> 8);
byte b = (byte)(pixel.B >> 8);
byte a = (byte)(pixel.A >> 8);
// 设置 Bitmap 中对应像素的颜色
bitmap.SetPixel(x, y, System.Drawing.Color.FromArgb(a, r, g, b));
}
}
return bitmap;
}
public static Image<Rgb24> ConvertBgrByteArrayToRgb24Image(byte[] byteArray, int width, int height, int channels)
{
// 验证通道数必须为3BGR
if (channels != 3)
{
throw new ArgumentException("通道数必须为3适用于BGR彩色图像。");
}
// 创建一个新的 Image<Rgb24> 对象
Image<Rgb24> image = new Image<Rgb24>(width, height);
// 填充图像数据
int bytesPerPixel = channels; // 每个像素的字节数为3B、G、R
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
// 计算当前像素在字节数组中的起始位置
int baseIndex = (y * width + x) * bytesPerPixel;
// 确保数组边界
if (baseIndex + 2 >= byteArray.Length)
{
throw new ArgumentException("字节数组长度不足以填充图像。");
}
// 提取 B、G、R 值
byte b = byteArray[baseIndex];
byte g = byteArray[baseIndex + 1];
byte r = byteArray[baseIndex + 2];
// 设置图像像素(注意转换为 RGB 顺序)
image[x, y] = new Rgb24(r, g, b);
}
}
return image;
}
public static Image<Rgba64> ConvertByteArrayToRgba64Image(byte[] byteArray, int width, int height, int channels)
{
// 验证通道数必须为4RGBA
if (channels != 4)
{
throw new ArgumentException("通道数必须为4适用于RGBA彩色图像。");
}
// 创建一个新的 Image<Rgba64> 对象
Image<Rgba64> image = new Image<Rgba64>(width, height);
// 每个通道的字节数为2因为是16位
int bytesPerPixel = channels * 2; // 每个像素的字节数4通道每个通道2字节
// 填充图像数据
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
// 计算当前像素在字节数组中的起始位置
int baseIndex = (y * width + x) * bytesPerPixel;
// 确保数组边界
if (baseIndex + 7 >= byteArray.Length)
{
throw new ArgumentException("字节数组长度不足以填充图像。");
}
// 提取 R、G、B、A 值每个通道是16位即2个字节
ushort r = (ushort)((byteArray[baseIndex] << 8) | byteArray[baseIndex + 1]);
ushort g = (ushort)((byteArray[baseIndex + 2] << 8) | byteArray[baseIndex + 3]);
ushort b = (ushort)((byteArray[baseIndex + 4] << 8) | byteArray[baseIndex + 5]);
ushort a = (ushort)((byteArray[baseIndex + 6] << 8) | byteArray[baseIndex + 7]);
// 设置图像像素RGBA顺序
image[x, y] = new Rgba64(r, g, b, a);
}
}
return image;
}
public static Image<Rgba64> ConvertByteArrayToRgba64Image(short[] byteArray, int width, int height, int channels)
{
// 验证通道数必须为4RGBA
if (channels != 4)
{
throw new ArgumentException("通道数必须为4适用于RGBA彩色图像。");
}
// 创建一个新的 Image<Rgba64> 对象
Image<Rgba64> image = new Image<Rgba64>(width, height);
// 填充图像数据
int totalPixels = width * height;
// 填充图像数据
for (int i = 0; i < totalPixels; i++)
{
// 计算当前像素在字节数组中的起始位置
int baseIndex = i * channels;
// 确保数组边界
if (baseIndex + 3 >= byteArray.Length)
{
throw new ArgumentException("字节数组长度不足以填充图像。");
}
// 提取 R、G、B、A 值
ushort r = (ushort)(byteArray[baseIndex] & 0xFFFF); // 读取 R 通道
ushort g = (ushort)(byteArray[baseIndex + 1] & 0xFFFF); // 读取 G 通道
ushort b = (ushort)(byteArray[baseIndex + 2] & 0xFFFF); // 读取 B 通道
ushort a = (ushort)(byteArray[baseIndex + 3] & 0xFFFF); // 读取 A 通道
// 设置图像像素RGBA顺序
image[i % width, i / width] = new Rgba64(r, g, b, a);
}
return image;
}
#region WMIMac地址
public static string GetMotherboardSerial()
{
string serialNumber = string.Empty;
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT SerialNumber FROM Win32_BaseBoard");
foreach (ManagementObject mo in searcher.Get())
{
serialNumber = mo["SerialNumber"].ToString();
break; // 只需一个序列号
}
}
catch (Exception ex)
{
Console.WriteLine("获取主板序列号时发生错误: " + ex.Message);
}
return serialNumber;
}
#endregion
public static string GetscientificNotation(float diff)
{
int exponent = (int)Math.Floor(Math.Log10(diff));
float normalized = (float)(diff / Math.Pow(10, exponent));
// 以科学计数法格式化输出
string scientificNotation = $"{normalized}e{exponent}";
return scientificNotation ;
}
}
}

407
src/PBAnaly/PBAnaly.csproj Normal file
View File

@ -0,0 +1,407 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B9CEF793-3D50-48A7-8B1A-3F121ECABE12}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>PBAnaly</RootNamespace>
<AssemblyName>PBAnaly</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>GS-Analy.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Design" />
<Reference Include="System.Management" />
<Reference Include="System.Windows.Forms.DataVisualization" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="DataProcessForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="DataProcessForm.Designer.cs">
<DependentUpon>DataProcessForm.cs</DependentUpon>
</Compile>
<Compile Include="LaneChartForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="LaneChartForm.Designer.cs">
<DependentUpon>LaneChartForm.cs</DependentUpon>
</Compile>
<Compile Include="LogForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="LogForm.Designer.cs">
<DependentUpon>LogForm.cs</DependentUpon>
</Compile>
<Compile Include="LoginForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="LoginForm.Designer.cs">
<DependentUpon>LoginForm.cs</DependentUpon>
</Compile>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Module\ImageProcess.cs" />
<Compile Include="Module\ImageToolMannage.cs" />
<Compile Include="Module\PBAnalyCommMannager.cs" />
<Compile Include="Module\util.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Read_Write_Log.cs" />
<Compile Include="SettingForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SettingForm.Designer.cs">
<DependentUpon>SettingForm.cs</DependentUpon>
</Compile>
<Compile Include="SignInForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SignInForm.Designer.cs">
<DependentUpon>SignInForm.cs</DependentUpon>
</Compile>
<Compile Include="UI\AnalyzeDataForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\AnalyzeDataForm.Designer.cs">
<DependentUpon>AnalyzeDataForm.cs</DependentUpon>
</Compile>
<Compile Include="UI\colorbarControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UI\colorbarControl.Designer.cs">
<DependentUpon>colorbarControl.cs</DependentUpon>
</Compile>
<Compile Include="UI\ImagePanel.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\ImagePanel.Designer.cs">
<DependentUpon>ImagePanel.cs</DependentUpon>
</Compile>
<Compile Include="UI\ImagePanelUser.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UI\ImagePanelUser.Designer.cs">
<DependentUpon>ImagePanelUser.cs</DependentUpon>
</Compile>
<Compile Include="UI\ImageToolPaletteForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\ImageToolPaletteForm.Designer.cs">
<DependentUpon>ImageToolPaletteForm.cs</DependentUpon>
</Compile>
<Compile Include="UI\RowMergeView.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="UI\RowMergeView.designer.cs">
<DependentUpon>RowMergeView.cs</DependentUpon>
</Compile>
<EmbeddedResource Include="DataProcessForm.resx">
<DependentUpon>DataProcessForm.cs</DependentUpon>
</EmbeddedResource>
<Compile Include="testAlgForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="testAlgForm.Designer.cs">
<DependentUpon>testAlgForm.cs</DependentUpon>
</Compile>
<EmbeddedResource Include="LaneChartForm.resx">
<DependentUpon>LaneChartForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="LogForm.resx">
<DependentUpon>LogForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="LoginForm.resx">
<DependentUpon>LoginForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="SettingForm.resx">
<DependentUpon>SettingForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SignInForm.resx">
<DependentUpon>SignInForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="testAlgForm.resx">
<DependentUpon>testAlgForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\AnalyzeDataForm.resx">
<DependentUpon>AnalyzeDataForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\colorbarControl.resx">
<DependentUpon>colorbarControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\ImagePanel.resx">
<DependentUpon>ImagePanel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\ImagePanelUser.resx">
<DependentUpon>ImagePanelUser.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\ImageToolPaletteForm.resx">
<DependentUpon>ImageToolPaletteForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\RowMergeView.resx">
<DependentUpon>RowMergeView.cs</DependentUpon>
</EmbeddedResource>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="AntdUI">
<Version>1.6.14</Version>
</PackageReference>
<PackageReference Include="Aspose.PDF">
<Version>24.10.0</Version>
</PackageReference>
<PackageReference Include="MaterialSkin">
<Version>0.2.1</Version>
</PackageReference>
<PackageReference Include="MaterialSkin.2">
<Version>2.3.1</Version>
</PackageReference>
<PackageReference Include="MetroModernUI">
<Version>1.4.0</Version>
</PackageReference>
<PackageReference Include="Microsoft.Extensions.DependencyModel">
<Version>8.0.2</Version>
</PackageReference>
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions">
<Version>8.0.2</Version>
</PackageReference>
<PackageReference Include="MiniExcel">
<Version>1.34.2</Version>
</PackageReference>
<PackageReference Include="Newtonsoft.Json">
<Version>13.0.3</Version>
</PackageReference>
<PackageReference Include="OpenCvSharp4">
<Version>4.10.0.20240616</Version>
</PackageReference>
<PackageReference Include="OpenCvSharp4.Extensions">
<Version>4.10.0.20240616</Version>
</PackageReference>
<PackageReference Include="OpenCvSharp4.runtime.win">
<Version>4.10.0.20240616</Version>
</PackageReference>
<PackageReference Include="ReaLTaiizor">
<Version>3.8.0.7</Version>
</PackageReference>
<PackageReference Include="ScottPlot">
<Version>5.0.43</Version>
</PackageReference>
<PackageReference Include="ScottPlot.WinForms">
<Version>5.0.43</Version>
</PackageReference>
<PackageReference Include="SixLabors.ImageSharp">
<Version>2.1.9</Version>
</PackageReference>
<PackageReference Include="SunnyUI">
<Version>3.7.0</Version>
</PackageReference>
<PackageReference Include="System.Diagnostics.DiagnosticSource">
<Version>8.0.1</Version>
</PackageReference>
<PackageReference Include="System.Security.AccessControl">
<Version>6.0.1</Version>
</PackageReference>
<PackageReference Include="System.Text.Encodings.Web">
<Version>8.0.0</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\PBBiologyVC\PBBiologyVC.vcxproj">
<Project>{c1dd8a06-7351-4c8d-bd7f-b2be76bb3903}</Project>
<Name>PBBiologyVC</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Resources\C.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\roi-select.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\yto-icon-X-transit_time.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\zoom-in.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\zoom-out.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\保存.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\壁纸.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\饼干.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\波形设置-未选中.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\波形图.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\窗口最大化_操作_jurassic.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\蛋白质-01.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\導出.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\返回前台.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\分析.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\风控.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\黑白平衡.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\计数器.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\胶原蛋白.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\控制窗口.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\前台.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\图片管理.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\圖片_20240731174523.jpg" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\執行日誌紀錄.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\重置.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\重组蛋白-CAR-T靶点蛋白.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\主页面-图像编辑-正反片.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\放大.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\缩小.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\保存图片.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\全屏.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\线段.png" />
</ItemGroup>
<ItemGroup>
<Content Include="GS-Analy.ico" />
<None Include="Resources\线段 %281%29.png" />
<None Include="Resources\魔术棒,魔法,魔术,一键.png" />
<None Include="Resources\圆形.png" />
<None Include="Resources\10矩形.png" />
<None Include="Resources\Gray.png" />
<None Include="Resources\YellowHot_1.bmp" />
<None Include="Resources\YellowHot_0.bmp" />
<None Include="Resources\Pseudo_1.bmp" />
<None Include="Resources\Pseudo_0.bmp" />
<None Include="Resources\EtBr_1.bmp" />
<None Include="Resources\EtBr_0.bmp" />
<None Include="Resources\Black_Yley_1.bmp" />
<None Include="Resources\Black_Yley_0.bmp" />
<None Include="Resources\Black_SDS_1.bmp" />
<None Include="Resources\Black_SDS_0.bmp" />
<None Include="Resources\Black_Red_1.bmp" />
<None Include="Resources\Black_Red_0.bmp" />
<None Include="Resources\Black_Green_1.bmp" />
<None Include="Resources\Black_Green_0.bmp" />
<None Include="Resources\Black_Blue_1.bmp" />
<None Include="Resources\Black_Blue_0.bmp" />
<None Include="Resources\京仪科技定稿_画板 1 副本2.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

82
src/PBAnaly/Program.cs Normal file
View File

@ -0,0 +1,82 @@
using System;
using System.Threading;
using System.IO;
using System.Windows.Forms;
using PBAnaly.Module;
namespace PBAnaly
{
public static class Global
{
public static String mDataDirUp = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
public static String mDataParent = Directory.GetParent(mDataDirUp).FullName;
public static String mDataUser = mDataParent + "\\PBAnaly\\UserData\\";
//public static String mDataDir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\TYRAFOS\\data\\Blood\\";
}
public enum Autholity
{
admin, Normal, Visitor
}
public class UserInfo
{
//0: Admin //1: Normal User //2 :Visitor
public Autholity autholity{ get; set; }
public string UserID { get; set; }
public string E_Mail { get; set; }
public string Password { get; set; }
}
public class Log
{
public string UserID { get; set; }
public string ITEM { get; set; }
public string Description { get; set; }
public string Time { get; set; }
}
internal static class Program
{
private static Mutex mutex;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
const string appName = "PBAnaly";
bool createdNew;
mutex = new Mutex(true, appName, out createdNew);
// 如果已经有一个实例在运行,退出程序
if (!createdNew)
{
MessageBox.Show("应用程序已经在运行。", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
#if true
string macAddress =util.GetMotherboardSerial();
if (macAddress == "PM00P0209N000037" || macAddress == "07D4822_M81D023244" || macAddress == "YQ1711233HY01423" || macAddress == "S312NXCV0056AZMB" || macAddress == "PM82L0235P000452"|| macAddress == "MP2M55J0" || macAddress == "S936NXCV000SJ2MB"|| macAddress == "S730NXCV009371MB")
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var login = new LoginForm();
login.StartPosition = FormStartPosition.CenterScreen;
Application.Run(login);
}
else
{
MessageBox.Show("你没有权限");
return;
}
#endif
}
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("BioProject1")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BioProject1")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("b9cef793-3d50-48a7-8b1a-3f121ecabe12")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,623 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace PBAnaly.Properties {
using System;
/// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// 返回此类使用的缓存的 ResourceManager 实例。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PBAnaly.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 重写当前线程的 CurrentUICulture 属性,对
/// 使用此强类型资源类的所有资源查找执行重写。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap _10矩形 {
get {
object obj = ResourceManager.GetObject("10矩形", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Black_Blue_0 {
get {
object obj = ResourceManager.GetObject("Black_Blue_0", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Black_Blue_1 {
get {
object obj = ResourceManager.GetObject("Black_Blue_1", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Black_Green_0 {
get {
object obj = ResourceManager.GetObject("Black_Green_0", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Black_Green_1 {
get {
object obj = ResourceManager.GetObject("Black_Green_1", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Black_Red_0 {
get {
object obj = ResourceManager.GetObject("Black_Red_0", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Black_Red_1 {
get {
object obj = ResourceManager.GetObject("Black_Red_1", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Black_SDS_0 {
get {
object obj = ResourceManager.GetObject("Black_SDS_0", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Black_SDS_1 {
get {
object obj = ResourceManager.GetObject("Black_SDS_1", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Black_Yley_0 {
get {
object obj = ResourceManager.GetObject("Black_Yley_0", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Black_Yley_1 {
get {
object obj = ResourceManager.GetObject("Black_Yley_1", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap C {
get {
object obj = ResourceManager.GetObject("C", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap EtBr_0 {
get {
object obj = ResourceManager.GetObject("EtBr_0", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap EtBr_1 {
get {
object obj = ResourceManager.GetObject("EtBr_1", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Gray {
get {
object obj = ResourceManager.GetObject("Gray", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Pseudo_0 {
get {
object obj = ResourceManager.GetObject("Pseudo_0", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Pseudo_1 {
get {
object obj = ResourceManager.GetObject("Pseudo_1", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap roi_select {
get {
object obj = ResourceManager.GetObject("roi-select", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap YellowHot_0 {
get {
object obj = ResourceManager.GetObject("YellowHot_0", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap YellowHot_1 {
get {
object obj = ResourceManager.GetObject("YellowHot_1", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap yto_icon_X_transit_time {
get {
object obj = ResourceManager.GetObject("yto-icon-X-transit_time", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap zoom_in {
get {
object obj = ResourceManager.GetObject("zoom-in", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap zoom_out {
get {
object obj = ResourceManager.GetObject("zoom-out", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap _图像编辑_正反片 {
get {
object obj = ResourceManager.GetObject("主页面-图像编辑-正反片", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap 稿_画板_1_副本2 {
get {
object obj = ResourceManager.GetObject("京仪科技定稿_画板 1 副本2", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("保存", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap 1 {
get {
object obj = ResourceManager.GetObject("保存1", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("保存图片", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("全屏", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("分析", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("前台", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("图片管理", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("圆形", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap 1 {
get {
object obj = ResourceManager.GetObject("圆形1", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap _20240731174523 {
get {
object obj = ResourceManager.GetObject("圖片_20240731174523", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("執行日誌紀錄", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("壁纸", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("導出", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("控制窗口", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("放大", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("波形图", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap _未选中 {
get {
object obj = ResourceManager.GetObject("波形设置-未选中", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap _操作_jurassic {
get {
object obj = ResourceManager.GetObject("窗口最大化_操作_jurassic", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap 线 {
get {
object obj = ResourceManager.GetObject("线段", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap 线__1_ {
get {
object obj = ResourceManager.GetObject("线段 (1)", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("缩小", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("胶原蛋白", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap _01 {
get {
object obj = ResourceManager.GetObject("蛋白质-01", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("计数器", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("返回前台", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap _CAR_T靶点蛋白 {
get {
object obj = ResourceManager.GetObject("重组蛋白-CAR-T靶点蛋白", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("重置", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("风控", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("饼干", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap _魔法_魔术_一键 {
get {
object obj = ResourceManager.GetObject("魔术棒,魔法,魔术,一键", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap {
get {
object obj = ResourceManager.GetObject("黑白平衡", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@ -0,0 +1,289 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="Black_Blue_0" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Black_Blue_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Black_Yley_1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Black_Yley_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="计数器" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\计数器.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="返回前台" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\返回前台.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="yto-icon-X-transit_time" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\yto-icon-X-transit_time.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="EtBr_1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\EtBr_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="保存图片" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\保存图片.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="线段" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\线段.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="饼干" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\饼干.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Black_Green_1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Black_Green_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Black_Red_1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Black_Red_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="保存" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\保存.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="重组蛋白-CAR-T靶点蛋白" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\重组蛋白-CAR-T靶点蛋白.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="全屏" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\全屏.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="胶原蛋白" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\胶原蛋白.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="波形设置-未选中" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\波形设置-未选中.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Black_Blue_1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Black_Blue_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="zoom-in" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\zoom-in.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="保存1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\保存.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="圖片_20240731174523" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\圖片_20240731174523.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="重置" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\重置.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Black_Red_0" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Black_Red_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="京仪科技定稿_画板 1 副本2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\京仪科技定稿_画板 1 副本2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="zoom-out" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\zoom-out.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="roi-select" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\roi-select.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="风控" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\风控.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="分析" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\分析.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="控制窗口" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\控制窗口.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Black_SDS_0" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Black_SDS_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="EtBr_0" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\EtBr_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Black_Yley_0" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Black_Yley_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="窗口最大化_操作_jurassic" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\窗口最大化_操作_jurassic.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="YellowHot_0" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\YellowHot_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Pseudo_0" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Pseudo_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="C" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\C.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="图片管理" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\图片管理.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="圆形" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\圆形.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="圆形1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\圆形.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="主页面-图像编辑-正反片" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\主页面-图像编辑-正反片.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="缩小" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\缩小.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="黑白平衡" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\黑白平衡.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="導出" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\導出.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Pseudo_1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Pseudo_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Gray" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Gray.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="10矩形" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\10矩形.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="放大" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\放大.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Black_Green_0" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Black_Green_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="YellowHot_1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\YellowHot_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="蛋白质-01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\蛋白质-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="壁纸" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\壁纸.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="執行日誌紀錄" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\執行日誌紀錄.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Black_SDS_1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Black_SDS_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="前台" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\前台.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="波形图" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\波形图.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="魔术棒,魔法,魔术,一键" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\魔术棒,魔法,魔术,一键.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="线段 (1)" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\线段 (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace PBAnaly.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.10.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

View File

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@ -0,0 +1,86 @@
using Microsoft.VisualBasic.FileIO;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PBAnaly
{
public class Read_Write_Log
{
public Read_Write_Log()
{
}
public string LogFile = Global.mDataUser + "Log.csv";
public List<Log> ReadCsv(string FilePath)
{
List<Log> returnInfo = new List<Log>();
using (TextFieldParser parser = new TextFieldParser(FilePath))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");
// Read and parse each line of the CSV file
try
{
while (!parser.EndOfData)
{
string[] fields = parser.ReadFields();
int count = 0;
string UserId = "";
string Item = "";
string Description = "";
string Time = "";
foreach (var item in fields)
{
if ((count % 4) == 0)
{
UserId = item;
}
else if ((count % 4) == 1)
{
Item = item;
}
else if ((count % 4) == 2)
{
Description = item;
}
else
{
Time = item;
returnInfo.Add(new Log() { UserID = UserId, ITEM = Item, Description = Description, Time = Time});
}
count++;
}
}
parser.Close();
return returnInfo;
}
catch
{
return null;
}
}
}
public void WriteCsv(string FilePath, List<Log> LogInfos)
{
using (var file = new StreamWriter(FilePath))
{
foreach (var item in LogInfos)
{
file.WriteLineAsync($"{item.UserID},{item.ITEM},{item.Description},{item.Time}");
}
file.Close();
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

BIN
src/PBAnaly/Resources/C.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 687 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 829 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 761 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

80
src/PBAnaly/SettingForm.Designer.cs generated Normal file
View File

@ -0,0 +1,80 @@
namespace PBAnaly
{
partial class SettingForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.panel1 = new System.Windows.Forms.Panel();
this.materialSwitch_UI = new MaterialSkin.Controls.MaterialSwitch();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.Controls.Add(this.materialSwitch_UI);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(3, 64);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(421, 232);
this.panel1.TabIndex = 0;
//
// materialSwitch_UI
//
this.materialSwitch_UI.AutoSize = true;
this.materialSwitch_UI.Depth = 0;
this.materialSwitch_UI.Location = new System.Drawing.Point(11, 17);
this.materialSwitch_UI.Margin = new System.Windows.Forms.Padding(0);
this.materialSwitch_UI.MouseLocation = new System.Drawing.Point(-1, -1);
this.materialSwitch_UI.MouseState = MaterialSkin.MouseState.HOVER;
this.materialSwitch_UI.Name = "materialSwitch_UI";
this.materialSwitch_UI.Ripple = true;
this.materialSwitch_UI.Size = new System.Drawing.Size(195, 37);
this.materialSwitch_UI.TabIndex = 12;
this.materialSwitch_UI.Text = "Dark / Light Theme";
this.materialSwitch_UI.UseVisualStyleBackColor = true;
this.materialSwitch_UI.CheckedChanged += new System.EventHandler(this.materialSwitch_UI_CheckedChanged);
//
// SettingForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(427, 299);
this.Controls.Add(this.panel1);
this.Name = "SettingForm";
this.Text = "Setting";
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel panel1;
private MaterialSkin.Controls.MaterialSwitch materialSwitch_UI;
}
}

View File

@ -0,0 +1,49 @@
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;
using MaterialSkin;
using MaterialSkin.Controls;
namespace PBAnaly
{
public partial class SettingForm : MaterialForm
{
public SettingForm(MaterialSkinManager materialSkinManager)
{
InitializeComponent();
UIInit();
Inn_materialSkinManager = materialSkinManager;
}
public MaterialSkinManager Inn_materialSkinManager;
public void UIInit()
{
//this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint, true);
//Inn_materialSkinManager = MaterialSkinManager.Instance; // 初始化 MaterialSkinManager 实例
//Inn_materialSkinManager.AddFormToManage(this); // 将要应用 Material Design 的窗体添加到管理列表中
//Inn_materialSkinManager.Theme = MaterialSkinManager.Themes.DARK; // Theme 属性用来设置整体的主题
//Inn_materialSkinManager.ColorScheme = new ColorScheme(Primary.BlueGrey800, Primary.BlueGrey900, Primary.BlueGrey500, Accent.Cyan700, TextShade.WHITE); // ColorScheme 属性来设置配色方案
}
private void materialSwitch_UI_CheckedChanged(object sender, EventArgs e)
{
if (materialSwitch_UI.Checked == true)
{
Inn_materialSkinManager.Theme = MaterialSkinManager.Themes.LIGHT; // Theme 属性用来设置整体的主题
Inn_materialSkinManager.ColorScheme = new ColorScheme(Primary.Purple900, Primary.Purple800, Primary.BlueGrey300, Accent.Purple700, TextShade.WHITE); // ColorScheme 属性来设置配色方案
}
else
{
Inn_materialSkinManager.Theme = MaterialSkinManager.Themes.DARK; // Theme 属性用来设置整体的主题
Inn_materialSkinManager.ColorScheme = new ColorScheme(Primary.BlueGrey800, Primary.BlueGrey900, Primary.BlueGrey500, Accent.Indigo700, TextShade.WHITE); // ColorScheme 属性来设置配色方案
}
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

267
src/PBAnaly/SignInForm.Designer.cs generated Normal file
View File

@ -0,0 +1,267 @@
namespace PBAnaly
{
partial class SignInForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.userName_materialTextBox = new MaterialSkin.Controls.MaterialTextBox2();
this.email_materialTextBox = new MaterialSkin.Controls.MaterialTextBox2();
this.password_materialTextBox = new MaterialSkin.Controls.MaterialTextBox2();
this.confirmPassword_materialTextBox = new MaterialSkin.Controls.MaterialTextBox2();
this.signIn_materialButton = new MaterialSkin.Controls.MaterialButton();
this.materialLabel_ID = new MaterialSkin.Controls.MaterialLabel();
this.materialLabel_email = new MaterialSkin.Controls.MaterialLabel();
this.materialLabel_PS = new MaterialSkin.Controls.MaterialLabel();
this.materialLabel_PW = new MaterialSkin.Controls.MaterialLabel();
this.SuspendLayout();
//
// userName_materialTextBox
//
this.userName_materialTextBox.AnimateReadOnly = false;
this.userName_materialTextBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.userName_materialTextBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal;
this.userName_materialTextBox.Depth = 0;
this.userName_materialTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
this.userName_materialTextBox.HideSelection = true;
this.userName_materialTextBox.LeadingIcon = null;
this.userName_materialTextBox.Location = new System.Drawing.Point(39, 92);
this.userName_materialTextBox.MaxLength = 32767;
this.userName_materialTextBox.MouseState = MaterialSkin.MouseState.OUT;
this.userName_materialTextBox.Name = "userName_materialTextBox";
this.userName_materialTextBox.PasswordChar = '\0';
this.userName_materialTextBox.PrefixSuffixText = null;
this.userName_materialTextBox.ReadOnly = false;
this.userName_materialTextBox.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.userName_materialTextBox.SelectedText = "";
this.userName_materialTextBox.SelectionLength = 0;
this.userName_materialTextBox.SelectionStart = 0;
this.userName_materialTextBox.ShortcutsEnabled = true;
this.userName_materialTextBox.Size = new System.Drawing.Size(401, 48);
this.userName_materialTextBox.TabIndex = 1;
this.userName_materialTextBox.TabStop = false;
this.userName_materialTextBox.Text = "UserName Or ID";
this.userName_materialTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
this.userName_materialTextBox.TrailingIcon = null;
this.userName_materialTextBox.UseSystemPasswordChar = false;
this.userName_materialTextBox.Click += new System.EventHandler(this.userName_materialTextBox_Click);
//
// email_materialTextBox
//
this.email_materialTextBox.AnimateReadOnly = false;
this.email_materialTextBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.email_materialTextBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal;
this.email_materialTextBox.Depth = 0;
this.email_materialTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
this.email_materialTextBox.HideSelection = true;
this.email_materialTextBox.LeadingIcon = null;
this.email_materialTextBox.Location = new System.Drawing.Point(39, 174);
this.email_materialTextBox.MaxLength = 32767;
this.email_materialTextBox.MouseState = MaterialSkin.MouseState.OUT;
this.email_materialTextBox.Name = "email_materialTextBox";
this.email_materialTextBox.PasswordChar = '\0';
this.email_materialTextBox.PrefixSuffixText = null;
this.email_materialTextBox.ReadOnly = false;
this.email_materialTextBox.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.email_materialTextBox.SelectedText = "";
this.email_materialTextBox.SelectionLength = 0;
this.email_materialTextBox.SelectionStart = 0;
this.email_materialTextBox.ShortcutsEnabled = true;
this.email_materialTextBox.Size = new System.Drawing.Size(401, 48);
this.email_materialTextBox.TabIndex = 2;
this.email_materialTextBox.TabStop = false;
this.email_materialTextBox.Text = "E-Mail";
this.email_materialTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
this.email_materialTextBox.TrailingIcon = null;
this.email_materialTextBox.UseSystemPasswordChar = false;
this.email_materialTextBox.Click += new System.EventHandler(this.email_materialTextBox_Click);
//
// password_materialTextBox
//
this.password_materialTextBox.AnimateReadOnly = false;
this.password_materialTextBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.password_materialTextBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal;
this.password_materialTextBox.Depth = 0;
this.password_materialTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
this.password_materialTextBox.HideSelection = true;
this.password_materialTextBox.LeadingIcon = null;
this.password_materialTextBox.Location = new System.Drawing.Point(39, 256);
this.password_materialTextBox.MaxLength = 32767;
this.password_materialTextBox.MouseState = MaterialSkin.MouseState.OUT;
this.password_materialTextBox.Name = "password_materialTextBox";
this.password_materialTextBox.PasswordChar = '\0';
this.password_materialTextBox.PrefixSuffixText = null;
this.password_materialTextBox.ReadOnly = false;
this.password_materialTextBox.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.password_materialTextBox.SelectedText = "";
this.password_materialTextBox.SelectionLength = 0;
this.password_materialTextBox.SelectionStart = 0;
this.password_materialTextBox.ShortcutsEnabled = true;
this.password_materialTextBox.Size = new System.Drawing.Size(401, 48);
this.password_materialTextBox.TabIndex = 3;
this.password_materialTextBox.TabStop = false;
this.password_materialTextBox.Text = "Password";
this.password_materialTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
this.password_materialTextBox.TrailingIcon = null;
this.password_materialTextBox.UseSystemPasswordChar = false;
this.password_materialTextBox.Click += new System.EventHandler(this.password_materialTextBox_Click);
//
// confirmPassword_materialTextBox
//
this.confirmPassword_materialTextBox.AnimateReadOnly = false;
this.confirmPassword_materialTextBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.confirmPassword_materialTextBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal;
this.confirmPassword_materialTextBox.Depth = 0;
this.confirmPassword_materialTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
this.confirmPassword_materialTextBox.HideSelection = true;
this.confirmPassword_materialTextBox.LeadingIcon = null;
this.confirmPassword_materialTextBox.Location = new System.Drawing.Point(39, 342);
this.confirmPassword_materialTextBox.MaxLength = 32767;
this.confirmPassword_materialTextBox.MouseState = MaterialSkin.MouseState.OUT;
this.confirmPassword_materialTextBox.Name = "confirmPassword_materialTextBox";
this.confirmPassword_materialTextBox.PasswordChar = '\0';
this.confirmPassword_materialTextBox.PrefixSuffixText = null;
this.confirmPassword_materialTextBox.ReadOnly = false;
this.confirmPassword_materialTextBox.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.confirmPassword_materialTextBox.SelectedText = "";
this.confirmPassword_materialTextBox.SelectionLength = 0;
this.confirmPassword_materialTextBox.SelectionStart = 0;
this.confirmPassword_materialTextBox.ShortcutsEnabled = true;
this.confirmPassword_materialTextBox.Size = new System.Drawing.Size(401, 48);
this.confirmPassword_materialTextBox.TabIndex = 4;
this.confirmPassword_materialTextBox.TabStop = false;
this.confirmPassword_materialTextBox.Text = "Confirm Password";
this.confirmPassword_materialTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
this.confirmPassword_materialTextBox.TrailingIcon = null;
this.confirmPassword_materialTextBox.UseSystemPasswordChar = false;
this.confirmPassword_materialTextBox.Click += new System.EventHandler(this.confirmPassword_materialTextBox_Click);
this.confirmPassword_materialTextBox.TextChanged += new System.EventHandler(this.confirmPassword_materialTextBox_TextChanged);
//
// signIn_materialButton
//
this.signIn_materialButton.AutoSize = false;
this.signIn_materialButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.signIn_materialButton.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.signIn_materialButton.Depth = 0;
this.signIn_materialButton.HighEmphasis = true;
this.signIn_materialButton.Icon = null;
this.signIn_materialButton.Location = new System.Drawing.Point(232, 421);
this.signIn_materialButton.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
this.signIn_materialButton.MouseState = MaterialSkin.MouseState.HOVER;
this.signIn_materialButton.Name = "signIn_materialButton";
this.signIn_materialButton.NoAccentTextColor = System.Drawing.Color.Empty;
this.signIn_materialButton.Size = new System.Drawing.Size(208, 36);
this.signIn_materialButton.TabIndex = 5;
this.signIn_materialButton.Text = "SIGN IN";
this.signIn_materialButton.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.signIn_materialButton.UseAccentColor = false;
this.signIn_materialButton.UseVisualStyleBackColor = true;
this.signIn_materialButton.Click += new System.EventHandler(this.signIn_materialButton_Click);
//
// materialLabel_ID
//
this.materialLabel_ID.AutoSize = true;
this.materialLabel_ID.Depth = 0;
this.materialLabel_ID.Font = new System.Drawing.Font("Roboto", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
this.materialLabel_ID.Location = new System.Drawing.Point(42, 143);
this.materialLabel_ID.MouseState = MaterialSkin.MouseState.HOVER;
this.materialLabel_ID.Name = "materialLabel_ID";
this.materialLabel_ID.Size = new System.Drawing.Size(1, 0);
this.materialLabel_ID.TabIndex = 7;
this.materialLabel_ID.UseAccent = true;
//
// materialLabel_email
//
this.materialLabel_email.AutoSize = true;
this.materialLabel_email.BackColor = System.Drawing.Color.Red;
this.materialLabel_email.Depth = 0;
this.materialLabel_email.Font = new System.Drawing.Font("Roboto", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
this.materialLabel_email.Location = new System.Drawing.Point(41, 225);
this.materialLabel_email.MouseState = MaterialSkin.MouseState.HOVER;
this.materialLabel_email.Name = "materialLabel_email";
this.materialLabel_email.Size = new System.Drawing.Size(1, 0);
this.materialLabel_email.TabIndex = 8;
this.materialLabel_email.UseAccent = true;
//
// materialLabel_PS
//
this.materialLabel_PS.AutoSize = true;
this.materialLabel_PS.Depth = 0;
this.materialLabel_PS.Font = new System.Drawing.Font("Roboto", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
this.materialLabel_PS.Location = new System.Drawing.Point(40, 307);
this.materialLabel_PS.MouseState = MaterialSkin.MouseState.HOVER;
this.materialLabel_PS.Name = "materialLabel_PS";
this.materialLabel_PS.Size = new System.Drawing.Size(1, 0);
this.materialLabel_PS.TabIndex = 9;
this.materialLabel_PS.UseAccent = true;
//
// materialLabel_PW
//
this.materialLabel_PW.AutoSize = true;
this.materialLabel_PW.BackColor = System.Drawing.SystemColors.Control;
this.materialLabel_PW.Depth = 0;
this.materialLabel_PW.Font = new System.Drawing.Font("Roboto", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
this.materialLabel_PW.Location = new System.Drawing.Point(41, 393);
this.materialLabel_PW.MouseState = MaterialSkin.MouseState.HOVER;
this.materialLabel_PW.Name = "materialLabel_PW";
this.materialLabel_PW.Size = new System.Drawing.Size(1, 0);
this.materialLabel_PW.TabIndex = 10;
this.materialLabel_PW.UseAccent = true;
//
// SignInForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(484, 486);
this.Controls.Add(this.materialLabel_PW);
this.Controls.Add(this.materialLabel_PS);
this.Controls.Add(this.materialLabel_email);
this.Controls.Add(this.materialLabel_ID);
this.Controls.Add(this.signIn_materialButton);
this.Controls.Add(this.confirmPassword_materialTextBox);
this.Controls.Add(this.password_materialTextBox);
this.Controls.Add(this.email_materialTextBox);
this.Controls.Add(this.userName_materialTextBox);
this.Name = "SignInForm";
this.Text = "SIGN IN";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private MaterialSkin.Controls.MaterialTextBox2 userName_materialTextBox;
private MaterialSkin.Controls.MaterialTextBox2 email_materialTextBox;
private MaterialSkin.Controls.MaterialTextBox2 password_materialTextBox;
private MaterialSkin.Controls.MaterialTextBox2 confirmPassword_materialTextBox;
private MaterialSkin.Controls.MaterialButton signIn_materialButton;
private MaterialSkin.Controls.MaterialLabel materialLabel_ID;
private MaterialSkin.Controls.MaterialLabel materialLabel_email;
private MaterialSkin.Controls.MaterialLabel materialLabel_PS;
private MaterialSkin.Controls.MaterialLabel materialLabel_PW;
}
}

265
src/PBAnaly/SignInForm.cs Normal file
View File

@ -0,0 +1,265 @@
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;
using System.IO;
using MaterialSkin;
using MaterialSkin.Controls;
using Microsoft.VisualBasic.FileIO;
namespace PBAnaly
{
public partial class SignInForm : MaterialForm
{
private MaterialSkinManager materialSkinManager;
private LoginForm loginForm;
bool confirmPCheck = false;
public SignInForm(LoginForm PassloginForm)
{
InitializeComponent();
loginForm = PassloginForm;
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint, true);
materialSkinManager = MaterialSkinManager.Instance; // 初始化 MaterialSkinManager 实例
materialSkinManager.AddFormToManage(this); // 将要应用 Material Design 的窗体添加到管理列表中
materialSkinManager.Theme = MaterialSkinManager.Themes.DARK; // Theme 属性用来设置整体的主题
materialSkinManager.ColorScheme = new ColorScheme(Primary.BlueGrey800, Primary.BlueGrey900, Primary.BlueGrey500, Accent.Red700, TextShade.WHITE);
}
private void userName_materialTextBox_Click(object sender, EventArgs e)
{
userName_materialTextBox.Text = "";
}
private void email_materialTextBox_Click(object sender, EventArgs e)
{
email_materialTextBox.Text = "";
}
private void password_materialTextBox_Click(object sender, EventArgs e)
{
password_materialTextBox.Text = "";
password_materialTextBox.PasswordChar = '*';
password_materialTextBox.UseSystemPasswordChar = true;
}
private void confirmPassword_materialTextBox_Click(object sender, EventArgs e)
{
confirmPassword_materialTextBox.Text = "";
confirmPassword_materialTextBox.PasswordChar = '*';
confirmPassword_materialTextBox.UseSystemPasswordChar = true;
}
private void signIn_materialButton_Click(object sender, EventArgs e)
{
bool signInSuccess = true;
string UserID_str = userName_materialTextBox.Text;
string E_mail_str = email_materialTextBox.Text;
string Password_str = password_materialTextBox.Text;
string Con_Password_str = confirmPassword_materialTextBox.Text;
List<UserInfo> userInfos = new List<UserInfo>();
//Check Is Null Or Not
if (string.IsNullOrEmpty(UserID_str))
{
materialLabel_ID.Text = "Please Type User Name Or ID!!";
signInSuccess = false;
}
else
{
materialLabel_ID.Text = "";
}
if (string.IsNullOrEmpty(E_mail_str))
{
materialLabel_email.Text = "Please Type E-Mail Address!!";
signInSuccess = false;
}
else
{
materialLabel_email.Text = "";
}
if (string.IsNullOrEmpty(Password_str))
{
materialLabel_PS.Text = "Please Type Password!!";
signInSuccess = false;
}
else
{
materialLabel_PS.Text = "";
}
if (string.IsNullOrEmpty(Con_Password_str))
{
materialLabel_PW.Text = "Please Type Confirm Password!!";
signInSuccess = false;
}
else
{
materialLabel_PW.Text = "";
}
if (!signInSuccess)
{
return;
}
else
{
//Check Format
if (!Password_str.Equals(Con_Password_str))
{
materialLabel_PW.Text = "*Please Type Same Password!!";
signInSuccess = false;
}
else
{
materialLabel_PW.Text = "";
}
if (!E_mail_str.Contains("@"))
{
materialLabel_email.Text = "*Please Check E-mail Address!!";
signInSuccess = false;
}
else
{
materialLabel_email.Text = "";
}
if (signInSuccess)
{
//Read UserInfo CSV
string FileName = Global.mDataUser + "UserInfo.csv";
if (!File.Exists(FileName))
{
if (!Directory.Exists(Global.mDataUser))
{
Directory.CreateDirectory(Global.mDataUser);
}
userInfos.Add(new UserInfo() { autholity = Autholity.Normal, UserID = UserID_str, E_Mail = E_mail_str, Password = Password_str });
WriteCsv(FileName, userInfos);
}
else
{
var GetCurrentUserInfo = ReadCsv(FileName);
foreach(var item in GetCurrentUserInfo)
{
if(item.UserID.Equals(UserID_str))
{
MessageBox.Show("This UserID has been registered, please change another one!!");
return;
}
}
GetCurrentUserInfo.Add(new UserInfo() { autholity = Autholity.Normal, UserID = UserID_str, E_Mail = E_mail_str, Password = Password_str });
WriteCsv(FileName, GetCurrentUserInfo);
}
loginForm.Visible = true;
this.Visible = false;
this.Close();
}
else
{
return;
}
}
}
private void WriteCsv(string FilePath, List<UserInfo> userInfos)
{
using (var file = new StreamWriter(FilePath))
{
foreach (var item in userInfos)
{
file.WriteLineAsync($"{item.autholity},{item.UserID},{item.E_Mail},{item.Password}");
}
file.Close();
}
}
private List<UserInfo> ReadCsv(string FilePath)
{
List<UserInfo> returnInfo = new List<UserInfo>();
using (TextFieldParser parser = new TextFieldParser(FilePath))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");
// Read and parse each line of the CSV file
try
{
while (!parser.EndOfData)
{
string[] fields = parser.ReadFields();
int count = 0;
Autholity autholity = Autholity.admin;
string UserId = "";
string Email = "";
string PassWord = "";
foreach (var item in fields)
{
if ( (count%4) == 0)
{
Enum.TryParse(item, out autholity);
}
else if ((count%4) == 1)
{
UserId = item;
}
else if ((count%4) == 2)
{
Email = item;
}
else
{
PassWord = item;
returnInfo.Add(new UserInfo() { autholity = autholity, UserID = UserId, E_Mail = Email, Password = PassWord });
}
count++;
}
}
parser.Close();
return returnInfo;
}
catch
{
return null;
}
}
}
private void confirmPassword_materialTextBox_TextChanged(object sender, EventArgs e)
{
string Password_str = password_materialTextBox.Text;
string Confirm_Password_str = confirmPassword_materialTextBox.Text;
if ((Password_str != Confirm_Password_str) && Password_str != null && Confirm_Password_str != null)
{
materialLabel_PW.Text = "*Please Type Same Password!!";
}
else
{
materialLabel_PW.Text = "";
}
}
}
}

120
src/PBAnaly/SignInForm.resx Normal file
View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

206
src/PBAnaly/UI/AnalyzeDataForm.Designer.cs generated Normal file
View File

@ -0,0 +1,206 @@
namespace PBAnaly.UI
{
partial class AnalyzeDataForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.miniToolStrip = new ReaLTaiizor.Controls.CrownMenuStrip();
this.ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.crownMenuStrip1 = new ReaLTaiizor.Controls.CrownMenuStrip();
this.metroPanel1 = new ReaLTaiizor.Controls.MetroPanel();
this.crownLabel1 = new ReaLTaiizor.Controls.CrownLabel();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.panel1 = new ReaLTaiizor.Controls.Panel();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.crownMenuStrip1.SuspendLayout();
this.metroPanel1.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.SuspendLayout();
//
// miniToolStrip
//
this.miniToolStrip.AccessibleName = "新项选择";
this.miniToolStrip.AccessibleRole = System.Windows.Forms.AccessibleRole.ComboBox;
this.miniToolStrip.AutoSize = false;
this.miniToolStrip.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65)))));
this.miniToolStrip.Dock = System.Windows.Forms.DockStyle.None;
this.miniToolStrip.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220)))));
this.miniToolStrip.ImageScalingSize = new System.Drawing.Size(20, 20);
this.miniToolStrip.Location = new System.Drawing.Point(91, 3);
this.miniToolStrip.Name = "miniToolStrip";
this.miniToolStrip.Padding = new System.Windows.Forms.Padding(3, 2, 0, 2);
this.miniToolStrip.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
this.miniToolStrip.Size = new System.Drawing.Size(872, 25);
this.miniToolStrip.TabIndex = 2;
//
// 文件ToolStripMenuItem1
//
this.ToolStripMenuItem1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65)))));
this.ToolStripMenuItem1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220)))));
this.ToolStripMenuItem1.Name = "文件ToolStripMenuItem1";
this.ToolStripMenuItem1.Size = new System.Drawing.Size(53, 21);
this.ToolStripMenuItem1.Text = "文件";
//
// 选项ToolStripMenuItem1
//
this.ToolStripMenuItem1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65)))));
this.ToolStripMenuItem1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220)))));
this.ToolStripMenuItem1.Name = "选项ToolStripMenuItem1";
this.ToolStripMenuItem1.Size = new System.Drawing.Size(53, 21);
this.ToolStripMenuItem1.Text = "选项";
//
// crownMenuStrip1
//
this.crownMenuStrip1.BackColor = System.Drawing.Color.Gray;
this.crownMenuStrip1.Dock = System.Windows.Forms.DockStyle.Fill;
this.crownMenuStrip1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220)))));
this.crownMenuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
this.crownMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem1,
this.ToolStripMenuItem1});
this.crownMenuStrip1.Location = new System.Drawing.Point(0, 0);
this.crownMenuStrip1.Name = "crownMenuStrip1";
this.crownMenuStrip1.Padding = new System.Windows.Forms.Padding(3, 2, 0, 2);
this.crownMenuStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
this.crownMenuStrip1.Size = new System.Drawing.Size(872, 25);
this.crownMenuStrip1.TabIndex = 2;
//
// metroPanel1
//
this.metroPanel1.BackgroundColor = System.Drawing.Color.DimGray;
this.metroPanel1.BorderColor = System.Drawing.Color.Gray;
this.metroPanel1.BorderThickness = 1;
this.tableLayoutPanel1.SetColumnSpan(this.metroPanel1, 2);
this.metroPanel1.Controls.Add(this.crownLabel1);
this.metroPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.metroPanel1.IsDerivedStyle = true;
this.metroPanel1.Location = new System.Drawing.Point(0, 31);
this.metroPanel1.Margin = new System.Windows.Forms.Padding(0);
this.metroPanel1.Name = "metroPanel1";
this.metroPanel1.Size = new System.Drawing.Size(1466, 36);
this.metroPanel1.Style = ReaLTaiizor.Enum.Metro.Style.Custom;
this.metroPanel1.StyleManager = null;
this.metroPanel1.TabIndex = 3;
this.metroPanel1.ThemeAuthor = "Taiizor";
this.metroPanel1.ThemeName = "MetroDark";
//
// crownLabel1
//
this.crownLabel1.AutoSize = true;
this.crownLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220)))));
this.crownLabel1.Location = new System.Drawing.Point(4, 11);
this.crownLabel1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.crownLabel1.Name = "crownLabel1";
this.crownLabel1.Size = new System.Drawing.Size(37, 15);
this.crownLabel1.TabIndex = 0;
this.crownLabel1.Text = "显示";
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Controls.Add(this.metroPanel1, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 2);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(4, 30);
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(4);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 3;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 31F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(1466, 1277);
this.tableLayoutPanel1.TabIndex = 3;
//
// panel1
//
this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(51)))), ((int)(((byte)(63)))));
this.tableLayoutPanel1.SetColumnSpan(this.panel1, 2);
this.panel1.Controls.Add(this.dataGridView1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.EdgeColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(41)))), ((int)(((byte)(50)))));
this.panel1.Location = new System.Drawing.Point(4, 71);
this.panel1.Margin = new System.Windows.Forms.Padding(4);
this.panel1.Name = "panel1";
this.panel1.Padding = new System.Windows.Forms.Padding(7, 6, 7, 6);
this.panel1.Size = new System.Drawing.Size(1458, 1202);
this.panel1.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
this.panel1.TabIndex = 4;
this.panel1.Text = "panel1";
//
// dataGridView1
//
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dataGridView1.Location = new System.Drawing.Point(7, 6);
this.dataGridView1.Margin = new System.Windows.Forms.Padding(4);
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.RowHeadersWidth = 51;
this.dataGridView1.RowTemplate.Height = 23;
this.dataGridView1.Size = new System.Drawing.Size(1444, 1190);
this.dataGridView1.TabIndex = 0;
//
// AnalyzeDataForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1474, 1311);
this.Controls.Add(this.tableLayoutPanel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
this.FormStyle = MaterialSkin.Controls.MaterialForm.FormStyles.ActionBar_None;
this.MainMenuStrip = this.miniToolStrip;
this.Margin = new System.Windows.Forms.Padding(4);
this.Name = "AnalyzeDataForm";
this.Padding = new System.Windows.Forms.Padding(4, 30, 4, 4);
this.Text = "AnalyzeDataForm";
this.crownMenuStrip1.ResumeLayout(false);
this.crownMenuStrip1.PerformLayout();
this.metroPanel1.ResumeLayout(false);
this.metroPanel1.PerformLayout();
this.tableLayoutPanel1.ResumeLayout(false);
this.panel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private ReaLTaiizor.Controls.CrownMenuStrip miniToolStrip;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem1;
private ReaLTaiizor.Controls.CrownMenuStrip crownMenuStrip1;
private ReaLTaiizor.Controls.MetroPanel metroPanel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private ReaLTaiizor.Controls.CrownLabel crownLabel1;
private ReaLTaiizor.Controls.Panel panel1;
private System.Windows.Forms.DataGridView dataGridView1;
}
}

View File

@ -0,0 +1,200 @@
using MaterialSkin.Controls;
using PBBiologyVC;
//using ReaLTaiizor.Util;
//using Sunny.UI.Win32;
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 AnalyzeDataForm : MaterialForm
{
private List<_band_info> band_info;
private List<TopHeader> _headers = new List<TopHeader>();
public struct headInfo
{
public int index;
public List<string> name;
}
public List<TopHeader> Headers
{
get { return _headers; }
}
public struct TopHeader
{
public TopHeader(int index, int span, string text)
{
this.Index = index;
this.Span = span;
this.Text = text;
}
public int Index;
public int Span;
public string Text;
}
public AnalyzeDataForm(List<_band_info> _band_info)
{
InitializeComponent();
band_info = _band_info;
Draw();
this.dataGridView1.CellPainting += DataGridView1_CellPainting;
}
public void Draw()
{
this.dataGridView1.Rows.Clear();
this.dataGridView1.Columns.Clear();
this.dataGridView1.RowCount = 1;
this.dataGridView1.ColumnCount = band_info.Count*7 + 1;
this.dataGridView1.Columns[0].HeaderText = "行/列";
int index_c = 0;
for (int i = 1; i < this.dataGridView1.ColumnCount; i=i+7)
{
this.dataGridView1.Columns[i].HeaderText ="分子量";
this.dataGridView1.Columns[i+1].HeaderText = "条带含量";
this.dataGridView1.Columns[i+2].HeaderText = "相对含量";
this.dataGridView1.Columns[i+3].HeaderText = "IOD";
this.dataGridView1.Columns[i+4].HeaderText = "最大OD";
this.dataGridView1.Columns[i+5].HeaderText = "百分比";
this.dataGridView1.Columns[i + 6].HeaderText = "匹配";
}
_headers = new List<TopHeader>();
int index = 1;
for (int i = 1; i < this.dataGridView1.ColumnCount; i=i+7)
{
TopHeader topHeader = new TopHeader(i, 7, "泳道" + index++);
_headers.Add(topHeader);
}
int r_index = 0;
int c_index = 1;
this.dataGridView1.Rows[0].Cells[0].Value = "r1";
foreach (var _bi in band_info)
{
foreach (var minfo in _bi.Minfo)
{
this.dataGridView1.Rows[r_index].Cells[c_index++].Value = minfo.molecular_weight;
this.dataGridView1.Rows[r_index].Cells[c_index++].Value = minfo.band_content;
this.dataGridView1.Rows[r_index].Cells[c_index++].Value = minfo.relative_content;
this.dataGridView1.Rows[r_index].Cells[c_index++].Value = minfo.IOD;
this.dataGridView1.Rows[r_index].Cells[c_index++].Value = minfo.maxOD;
this.dataGridView1.Rows[r_index].Cells[c_index++].Value = minfo.percentum;
this.dataGridView1.Rows[r_index].Cells[c_index++].Value = minfo.match;
}
}
this.dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
this.dataGridView1.ColumnHeadersHeight = 50;
this.dataGridView1.Refresh();
}
int top = 0;
int left = 0;
int height = 0;
int width1 = 0;
private void DataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
#region datagridview表头
DataGridView dgv = (DataGridView)(sender);
if (e.RowIndex != -1) return;
foreach (TopHeader item in Headers)
{
if (e.ColumnIndex >= item.Index && e.ColumnIndex < item.Index + item.Span)
{
if (e.ColumnIndex == item.Index)
{
top = e.CellBounds.Top;
left = e.CellBounds.Left;
height = e.CellBounds.Height;
}
int width = 0;//总长度
for (int i = item.Index; i < item.Span + item.Index; i++)
{
width += dgv.Columns[i].Width;
}
Rectangle rect = new Rectangle(left, top, width, e.CellBounds.Height);
using (Brush backColorBrush = new SolidBrush(e.CellStyle.BackColor)) //Cell背景颜色
{
//抹去原来的cell背景
e.Graphics.FillRectangle(backColorBrush, rect);
}
using (Pen gridLinePen = new Pen(dgv.GridColor)) //画笔颜色
{
e.Graphics.DrawLine(gridLinePen, left, top, left + width, top);
e.Graphics.DrawLine(gridLinePen, left, top + height / 2, left + width, top + height / 2);
e.Graphics.DrawLine(gridLinePen, left, top + height - 1, left + width, top + height - 1); //自定义区域下部横线
width1 = 0;
e.Graphics.DrawLine(gridLinePen, left - 1, top, left - 1, top + height);
for (int i = item.Index; i < item.Span + item.Index; i++)
{
if (i == 1 || i == 2)
{
width1 += dgv.Columns[i].Width - 1; //分隔区域首列
}
else
{
width1 += dgv.Columns[i].Width;
}
e.Graphics.DrawLine(gridLinePen, left + width1, top + height / 2, left + width1, top + height);
}
SizeF sf = e.Graphics.MeasureString(item.Text, e.CellStyle.Font);
float lstr = (width - sf.Width) / 2;
float rstr = (height / 2 - sf.Height) / 2;
//画出文本框
if (item.Text != "")
{
e.Graphics.DrawString(item.Text, e.CellStyle.Font,
new SolidBrush(e.CellStyle.ForeColor),
left + lstr,
top + rstr,
StringFormat.GenericDefault);
}
width = 0;
width1 = 0;
for (int i = item.Index; i < item.Span + item.Index; i++)
{
string columnValue = dgv.Columns[i].HeaderText;
width1 = dgv.Columns[i].Width;
sf = e.Graphics.MeasureString(columnValue, e.CellStyle.Font);
lstr = (width1 - sf.Width) / 2;
rstr = (height / 2 - sf.Height) / 2;
if (columnValue != "")
{
e.Graphics.DrawString(columnValue, e.CellStyle.Font,
new SolidBrush(e.CellStyle.ForeColor),
left + width + lstr,
top + height / 2 + rstr,
StringFormat.GenericDefault);
}
width += dgv.Columns[i].Width;
}
}
e.Handled = true;
}
}
#endregion
}
}
}

View File

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="miniToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="crownMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>191, 17</value>
</metadata>
</root>

440
src/PBAnaly/UI/ImagePanel.Designer.cs generated Normal file
View File

@ -0,0 +1,440 @@
namespace PBAnaly.UI
{
partial class ImagePanel
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.hpb_auto = new ReaLTaiizor.Controls.HopePictureBox();
this.hhpb_save = new ReaLTaiizor.Controls.HopePictureBox();
this.hpb_zoom_in = new ReaLTaiizor.Controls.HopePictureBox();
this.poisonLabel1 = new ReaLTaiizor.Controls.PoisonLabel();
this.hpb_zoom_out = new ReaLTaiizor.Controls.HopePictureBox();
this.mcb_mode = new ReaLTaiizor.Controls.MetroComboBox();
this.cb_scientific = new ReaLTaiizor.Controls.CheckBox();
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
this.tlpanl_image_bar = new System.Windows.Forms.TableLayoutPanel();
this.pb_coloarbar_image = new System.Windows.Forms.PictureBox();
this.pl_image = new ReaLTaiizor.Controls.Panel();
this.pl_bg_image = new ReaLTaiizor.Controls.Panel();
this.pb_image = new System.Windows.Forms.PictureBox();
this.lb_wh = new AntdUI.Label();
this.lb_modename = new AntdUI.Label();
this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
this.mlb_bottomLabel = new ReaLTaiizor.Controls.MoonLabel();
this.tableLayoutPanel1.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.hpb_auto)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.hhpb_save)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.hpb_zoom_in)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.hpb_zoom_out)).BeginInit();
this.tableLayoutPanel3.SuspendLayout();
this.tlpanl_image_bar.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pb_coloarbar_image)).BeginInit();
this.pl_image.SuspendLayout();
this.pl_bg_image.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pb_image)).BeginInit();
this.tableLayoutPanel4.SuspendLayout();
this.SuspendLayout();
//
// 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, 15F));
this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel3, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel4, 0, 2);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(2, 19);
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, 22F));
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, 12F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(363, 311);
this.tableLayoutPanel1.TabIndex = 0;
//
// tableLayoutPanel2
//
this.tableLayoutPanel2.ColumnCount = 7;
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, 80F));
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, 28F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 28F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 26F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 43F));
this.tableLayoutPanel2.Controls.Add(this.hpb_auto, 3, 0);
this.tableLayoutPanel2.Controls.Add(this.hhpb_save, 6, 0);
this.tableLayoutPanel2.Controls.Add(this.hpb_zoom_in, 4, 0);
this.tableLayoutPanel2.Controls.Add(this.poisonLabel1, 0, 0);
this.tableLayoutPanel2.Controls.Add(this.hpb_zoom_out, 5, 0);
this.tableLayoutPanel2.Controls.Add(this.mcb_mode, 1, 0);
this.tableLayoutPanel2.Controls.Add(this.cb_scientific, 2, 0);
this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel2.Location = new System.Drawing.Point(2, 2);
this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(2);
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.Size = new System.Drawing.Size(359, 18);
this.tableLayoutPanel2.TabIndex = 1;
//
// hpb_auto
//
this.hpb_auto.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(196)))), ((int)(((byte)(204)))));
this.hpb_auto.Dock = System.Windows.Forms.DockStyle.Fill;
this.hpb_auto.Image = global::PBAnaly.Properties.Resources.;
this.hpb_auto.Location = new System.Drawing.Point(234, 0);
this.hpb_auto.Margin = new System.Windows.Forms.Padding(0);
this.hpb_auto.Name = "hpb_auto";
this.hpb_auto.PixelOffsetType = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
this.hpb_auto.Size = new System.Drawing.Size(28, 18);
this.hpb_auto.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.hpb_auto.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
this.hpb_auto.TabIndex = 4;
this.hpb_auto.TabStop = false;
this.hpb_auto.TextRenderingType = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
this.hpb_auto.Click += new System.EventHandler(this.hpb_auto_Click);
//
// hhpb_save
//
this.hhpb_save.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(196)))), ((int)(((byte)(204)))));
this.hhpb_save.Dock = System.Windows.Forms.DockStyle.Fill;
this.hhpb_save.Image = global::PBAnaly.Properties.Resources.;
this.hhpb_save.Location = new System.Drawing.Point(316, 0);
this.hhpb_save.Margin = new System.Windows.Forms.Padding(0);
this.hhpb_save.Name = "hhpb_save";
this.hhpb_save.PixelOffsetType = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
this.hhpb_save.Size = new System.Drawing.Size(43, 18);
this.hhpb_save.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.hhpb_save.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
this.hhpb_save.TabIndex = 3;
this.hhpb_save.TabStop = false;
this.hhpb_save.TextRenderingType = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
this.hhpb_save.Click += new System.EventHandler(this.hhpb_save_Click);
//
// hpb_zoom_in
//
this.hpb_zoom_in.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(196)))), ((int)(((byte)(204)))));
this.hpb_zoom_in.Dock = System.Windows.Forms.DockStyle.Fill;
this.hpb_zoom_in.Image = global::PBAnaly.Properties.Resources.;
this.hpb_zoom_in.Location = new System.Drawing.Point(262, 0);
this.hpb_zoom_in.Margin = new System.Windows.Forms.Padding(0);
this.hpb_zoom_in.Name = "hpb_zoom_in";
this.hpb_zoom_in.PixelOffsetType = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
this.hpb_zoom_in.Size = new System.Drawing.Size(28, 18);
this.hpb_zoom_in.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.hpb_zoom_in.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
this.hpb_zoom_in.TabIndex = 3;
this.hpb_zoom_in.TabStop = false;
this.hpb_zoom_in.TextRenderingType = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
this.hpb_zoom_in.Click += new System.EventHandler(this.hpb_zoom_in_Click);
//
// poisonLabel1
//
this.poisonLabel1.AutoSize = true;
this.poisonLabel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.poisonLabel1.Location = new System.Drawing.Point(2, 0);
this.poisonLabel1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.poisonLabel1.Name = "poisonLabel1";
this.poisonLabel1.Size = new System.Drawing.Size(46, 18);
this.poisonLabel1.TabIndex = 0;
this.poisonLabel1.Text = "模式:";
this.poisonLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// hpb_zoom_out
//
this.hpb_zoom_out.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(196)))), ((int)(((byte)(204)))));
this.hpb_zoom_out.Dock = System.Windows.Forms.DockStyle.Fill;
this.hpb_zoom_out.Image = global::PBAnaly.Properties.Resources.;
this.hpb_zoom_out.Location = new System.Drawing.Point(290, 0);
this.hpb_zoom_out.Margin = new System.Windows.Forms.Padding(0);
this.hpb_zoom_out.Name = "hpb_zoom_out";
this.hpb_zoom_out.PixelOffsetType = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
this.hpb_zoom_out.Size = new System.Drawing.Size(26, 18);
this.hpb_zoom_out.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.hpb_zoom_out.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
this.hpb_zoom_out.TabIndex = 2;
this.hpb_zoom_out.TabStop = false;
this.hpb_zoom_out.TextRenderingType = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
this.hpb_zoom_out.Click += new System.EventHandler(this.hpb_zoom_out_Click);
//
// mcb_mode
//
this.mcb_mode.AllowDrop = true;
this.mcb_mode.ArrowColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150)))));
this.mcb_mode.BackColor = System.Drawing.Color.Transparent;
this.mcb_mode.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238)))));
this.mcb_mode.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150)))));
this.mcb_mode.CausesValidation = false;
this.mcb_mode.DisabledBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(204)))), ((int)(((byte)(204)))), ((int)(((byte)(204)))));
this.mcb_mode.DisabledBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155)))));
this.mcb_mode.DisabledForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(136)))), ((int)(((byte)(136)))), ((int)(((byte)(136)))));
this.mcb_mode.Dock = System.Windows.Forms.DockStyle.Fill;
this.mcb_mode.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
this.mcb_mode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.mcb_mode.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F);
this.mcb_mode.FormattingEnabled = true;
this.mcb_mode.IsDerivedStyle = true;
this.mcb_mode.ItemHeight = 20;
this.mcb_mode.Items.AddRange(new object[] {
"merge",
"mark",
"pseudocolor"});
this.mcb_mode.Location = new System.Drawing.Point(52, 2);
this.mcb_mode.Margin = new System.Windows.Forms.Padding(2);
this.mcb_mode.Name = "mcb_mode";
this.mcb_mode.SelectedItemBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(177)))), ((int)(((byte)(225)))));
this.mcb_mode.SelectedItemForeColor = System.Drawing.Color.White;
this.mcb_mode.Size = new System.Drawing.Size(76, 26);
this.mcb_mode.Style = ReaLTaiizor.Enum.Metro.Style.Light;
this.mcb_mode.StyleManager = null;
this.mcb_mode.TabIndex = 1;
this.mcb_mode.ThemeAuthor = "Taiizor";
this.mcb_mode.ThemeName = "MetroLight";
this.mcb_mode.SelectedIndexChanged += new System.EventHandler(this.mcb_mode_SelectedIndexChanged);
//
// cb_scientific
//
this.cb_scientific.Checked = false;
this.cb_scientific.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(66)))), ((int)(((byte)(76)))), ((int)(((byte)(85)))));
this.cb_scientific.CheckedBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(66)))), ((int)(((byte)(76)))), ((int)(((byte)(85)))));
this.cb_scientific.CheckedDisabledColor = System.Drawing.Color.Gray;
this.cb_scientific.CheckedEnabledColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(34)))), ((int)(((byte)(37)))));
this.cb_scientific.Cursor = System.Windows.Forms.Cursors.Hand;
this.cb_scientific.Dock = System.Windows.Forms.DockStyle.Fill;
this.cb_scientific.Enable = true;
this.cb_scientific.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
this.cb_scientific.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(116)))), ((int)(((byte)(125)))), ((int)(((byte)(132)))));
this.cb_scientific.Location = new System.Drawing.Point(133, 3);
this.cb_scientific.Name = "cb_scientific";
this.cb_scientific.Size = new System.Drawing.Size(98, 16);
this.cb_scientific.TabIndex = 5;
this.cb_scientific.Text = "光子数";
this.cb_scientific.CheckedChanged += new ReaLTaiizor.Controls.CheckBox.CheckedChangedEventHandler(this.cb_scientific_CheckedChanged);
//
// tableLayoutPanel3
//
this.tableLayoutPanel3.ColumnCount = 2;
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 86.27969F));
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 13.72032F));
this.tableLayoutPanel3.Controls.Add(this.tlpanl_image_bar, 0, 0);
this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel3.Location = new System.Drawing.Point(2, 24);
this.tableLayoutPanel3.Margin = new System.Windows.Forms.Padding(2);
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
this.tableLayoutPanel3.RowCount = 1;
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel3.Size = new System.Drawing.Size(359, 273);
this.tableLayoutPanel3.TabIndex = 2;
//
// tlpanl_image_bar
//
this.tlpanl_image_bar.ColumnCount = 2;
this.tableLayoutPanel3.SetColumnSpan(this.tlpanl_image_bar, 2);
this.tlpanl_image_bar.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 83.56546F));
this.tlpanl_image_bar.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.43454F));
this.tlpanl_image_bar.Controls.Add(this.pb_coloarbar_image, 1, 1);
this.tlpanl_image_bar.Controls.Add(this.pl_image, 0, 0);
this.tlpanl_image_bar.Controls.Add(this.lb_wh, 1, 2);
this.tlpanl_image_bar.Controls.Add(this.lb_modename, 1, 0);
this.tlpanl_image_bar.Dock = System.Windows.Forms.DockStyle.Fill;
this.tlpanl_image_bar.Location = new System.Drawing.Point(0, 0);
this.tlpanl_image_bar.Margin = new System.Windows.Forms.Padding(0);
this.tlpanl_image_bar.Name = "tlpanl_image_bar";
this.tlpanl_image_bar.RowCount = 3;
this.tlpanl_image_bar.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F));
this.tlpanl_image_bar.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tlpanl_image_bar.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 97F));
this.tlpanl_image_bar.Size = new System.Drawing.Size(359, 273);
this.tlpanl_image_bar.TabIndex = 2;
//
// pb_coloarbar_image
//
this.pb_coloarbar_image.Dock = System.Windows.Forms.DockStyle.Fill;
this.pb_coloarbar_image.Location = new System.Drawing.Point(300, 26);
this.pb_coloarbar_image.Margin = new System.Windows.Forms.Padding(0);
this.pb_coloarbar_image.Name = "pb_coloarbar_image";
this.pb_coloarbar_image.Size = new System.Drawing.Size(59, 150);
this.pb_coloarbar_image.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pb_coloarbar_image.TabIndex = 1;
this.pb_coloarbar_image.TabStop = false;
//
// pl_image
//
this.pl_image.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(51)))), ((int)(((byte)(63)))));
this.pl_image.Controls.Add(this.pl_bg_image);
this.pl_image.Dock = System.Windows.Forms.DockStyle.Fill;
this.pl_image.EdgeColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(41)))), ((int)(((byte)(50)))));
this.pl_image.Location = new System.Drawing.Point(2, 2);
this.pl_image.Margin = new System.Windows.Forms.Padding(2);
this.pl_image.Name = "pl_image";
this.pl_image.Padding = new System.Windows.Forms.Padding(4);
this.tlpanl_image_bar.SetRowSpan(this.pl_image, 3);
this.pl_image.Size = new System.Drawing.Size(296, 269);
this.pl_image.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
this.pl_image.TabIndex = 0;
this.pl_image.Text = "panel1";
//
// pl_bg_image
//
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.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.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pb_image.TabIndex = 0;
this.pb_image.TabStop = false;
//
// lb_wh
//
this.lb_wh.Dock = System.Windows.Forms.DockStyle.Fill;
this.lb_wh.Font = new System.Drawing.Font("隶书", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lb_wh.Location = new System.Drawing.Point(303, 179);
this.lb_wh.Name = "lb_wh";
this.lb_wh.Size = new System.Drawing.Size(53, 91);
this.lb_wh.TabIndex = 2;
this.lb_wh.Text = "Color Scale\r\nMin = 1\r\nMax= 2";
this.lb_wh.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// lb_modename
//
this.lb_modename.Dock = System.Windows.Forms.DockStyle.Fill;
this.lb_modename.Location = new System.Drawing.Point(303, 3);
this.lb_modename.Name = "lb_modename";
this.lb_modename.Size = new System.Drawing.Size(53, 20);
this.lb_modename.TabIndex = 3;
this.lb_modename.Text = "";
//
// tableLayoutPanel4
//
this.tableLayoutPanel4.ColumnCount = 2;
this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 80.93587F));
this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 19.06413F));
this.tableLayoutPanel4.Controls.Add(this.mlb_bottomLabel, 0, 0);
this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel4.Location = new System.Drawing.Point(0, 299);
this.tableLayoutPanel4.Margin = new System.Windows.Forms.Padding(0);
this.tableLayoutPanel4.Name = "tableLayoutPanel4";
this.tableLayoutPanel4.RowCount = 1;
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel4.Size = new System.Drawing.Size(363, 12);
this.tableLayoutPanel4.TabIndex = 3;
//
// mlb_bottomLabel
//
this.mlb_bottomLabel.AutoSize = true;
this.mlb_bottomLabel.BackColor = System.Drawing.Color.Transparent;
this.mlb_bottomLabel.Dock = System.Windows.Forms.DockStyle.Fill;
this.mlb_bottomLabel.ForeColor = System.Drawing.Color.Gray;
this.mlb_bottomLabel.Location = new System.Drawing.Point(2, 0);
this.mlb_bottomLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.mlb_bottomLabel.Name = "mlb_bottomLabel";
this.mlb_bottomLabel.Size = new System.Drawing.Size(289, 12);
this.mlb_bottomLabel.TabIndex = 0;
this.mlb_bottomLabel.Text = "1920x1080 ";
this.mlb_bottomLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// ImagePanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.ButtonHighlight;
this.ClientSize = new System.Drawing.Size(367, 332);
this.Controls.Add(this.tableLayoutPanel1);
this.ForeColor = System.Drawing.SystemColors.ControlText;
this.FormStyle = MaterialSkin.Controls.MaterialForm.FormStyles.ActionBar_None;
this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "ImagePanel";
this.Padding = new System.Windows.Forms.Padding(2, 19, 2, 2);
this.Text = "ImagePanel";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ImagePanel_FormClosing);
this.Enter += new System.EventHandler(this.ImagePanel_Enter);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.ImagePanel_MouseDown);
this.Resize += new System.EventHandler(this.ImagePanel_Resize);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel2.ResumeLayout(false);
this.tableLayoutPanel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.hpb_auto)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.hhpb_save)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.hpb_zoom_in)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.hpb_zoom_out)).EndInit();
this.tableLayoutPanel3.ResumeLayout(false);
this.tlpanl_image_bar.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pb_coloarbar_image)).EndInit();
this.pl_image.ResumeLayout(false);
this.pl_bg_image.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pb_image)).EndInit();
this.tableLayoutPanel4.ResumeLayout(false);
this.tableLayoutPanel4.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private ReaLTaiizor.Controls.PoisonLabel poisonLabel1;
private ReaLTaiizor.Controls.MetroComboBox mcb_mode;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
private ReaLTaiizor.Controls.Panel pl_image;
private System.Windows.Forms.PictureBox pb_image;
private ReaLTaiizor.Controls.HopePictureBox hpb_zoom_out;
private ReaLTaiizor.Controls.HopePictureBox hpb_zoom_in;
private ReaLTaiizor.Controls.HopePictureBox hhpb_save;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
private ReaLTaiizor.Controls.MoonLabel mlb_bottomLabel;
private ReaLTaiizor.Controls.HopePictureBox hpb_auto;
private System.Windows.Forms.TableLayoutPanel tlpanl_image_bar;
private ReaLTaiizor.Controls.Panel pl_bg_image;
private System.Windows.Forms.PictureBox pb_coloarbar_image;
private AntdUI.Label lb_wh;
private AntdUI.Label lb_modename;
private ReaLTaiizor.Controls.CheckBox cb_scientific;
}
}

1592
src/PBAnaly/UI/ImagePanel.cs Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

Some files were not shown because too many files have changed in this diff Show More