banboshi_V1/halftoneproject-master/AssistClient/FrmLogin.cs
2023-10-31 13:19:29 +08:00

216 lines
8.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using OpenCvSharp;
using OpenCvSharp.Extensions;
using AssistClient.Utils;
using Service;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
namespace AssistClient
{
public partial class FrmLogin : Form
{
public FrmLogin()
{
InitializeComponent();
}
private void FrmLogin_Load(object sender, EventArgs e)
{
//this.txtUserCode.SelectAll();
//string configPath = Application.StartupPath + "\\Login.ini";
////DEV
//if (Util.ReadIniValue(configPath, "LOGIN", "RememberUserCode") == "1")
//{
// this.txtUserCode.Text = Util.ReadIniValue(configPath, "LOGIN", "UserCode");
// this.chkRememberUserCode.Checked = true;
// this.txtUserPw.SelectAll();
// if (Util.ReadIniValue(configPath, "LOGIN", "RememberPw") == "1")
// {
// this.txtUserPw.Text = Util.ReadIniValue(configPath, "LOGIN", "PassWord");
// this.chkRememberPw.Checked = true;
// this.btnLogin.Focus();
// }
//}
//FrmLoading2 loading = new FrmLoading2();
//loading.ShowDialog(this);
//Thread workThread = new Thread(waiting);
//workThread.IsBackground = true;
//workThread.Start(loading);
}
private void FrmLogin_Shown(object sender, EventArgs e)
{
this.txtUserCode.Text = "admin";
this.txtUserPw.Text = "";
btnLogin_Click(null, null);
}
private void waiting(Object form)
{
FrmLoading2 frmLoading = form as FrmLoading2;
btnLogin_Click(null,null);
frmLoading.Close();
}
private void FrmLogin_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
System.GC.Collect();
System.Environment.Exit(0);
}
private void btnLogin_Click(object sender, EventArgs e)
{
try
{
string szUserCode=this.txtUserCode.Text.Trim();
string szUserPw=this.txtUserPw.Text.Trim();
if (szUserCode == "")
throw new Exception("请填写用户帐号!");
if (szUserPw.Length != 32)
szUserPw = Utils.Util.GetMD5(szUserPw);
UserService service = new UserService();
var model = service.GetModel(szUserCode, szUserPw);
if (model == null)
throw new Exception("帐号或密码错误!");
if (szUserCode!="admin" && !model.State)
throw new Exception("帐号已停用!");
if (string.IsNullOrWhiteSpace(model.Password))
model.Password = "";
//
string configPath = Application.StartupPath + "\\Login.ini";
if (this.chkRememberUserCode.Checked)
{
Util.WriteIniValue(configPath, "LOGIN", "UserCode", szUserCode);
Util.WriteIniValue(configPath, "LOGIN", "RememberUserCode", "1");
Util.WriteIniValue(configPath, "LOGIN", "PassWord", this.chkRememberPw.Checked ? szUserPw : "");
Util.WriteIniValue(configPath, "LOGIN", "RememberPw", this.chkRememberPw.Checked ? "1" : "0");
}
else
{
Util.WriteIniValue(configPath, "LOGIN", "RememberUserCode", "");
Util.WriteIniValue(configPath, "LOGIN", "RememberPw", "0");
Util.WriteIniValue(configPath, "LOGIN", "PassWord", this.chkRememberPw.Checked ? szUserPw : "");
Util.WriteIniValue(configPath, "LOGIN", "RememberPw", this.chkRememberPw.Checked ? "1" : "0");
}
//
this.Hide();
Config.loginUser=model;
FrmMain frmMain = new FrmMain();
frmMain.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void chkRememberUserCode_CheckedChanged(object sender, EventArgs e)
{
if(!chkRememberUserCode.Checked)
chkRememberPw.Checked = false;
}
private void chkRememberPw_CheckedChanged(object sender, EventArgs e)
{
if (chkRememberPw.Checked)
chkRememberUserCode.Checked = true;
}
private void button2_Click(object sender, EventArgs e)
{
if (MessageBox.Show($"确定初始化数据库?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
return;
try
{
Service.InitDB.initDB(this.txtUserPw.Text=="reset");
MessageBox.Show("数据库初始化成功请使用admin进行登录", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message,"失败",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
private void button3_Click(object sender, EventArgs e)
{
DateTime now = DateTime.Now;
byte[] buff = File.ReadAllBytes(Application.StartupPath + @"\bigbmp\bigbmp.bmp");
this.Text = (DateTime.Now - now).TotalMilliseconds.ToString() + " ";
now = DateTime.Now;
MemoryStream stream = new MemoryStream(buff);
List<Bitmap> listBmp = new List<Bitmap>();
using (Mat mat = BitmapConverter.ToMat(new System.Drawing.Bitmap(stream)))
{
//
int smallW = mat.Width / 23;
int smallH = mat.Height / 23;
{
for (int i = 0; i < 23; i++)
{
for (int j = 0; j < 23; j++)
{
Rect rect1 = new Rect(i * smallW, j * smallH, smallW, smallH);
using (Mat mat8U = mat[rect1])
{
listBmp.Add(BitmapConverter.ToBitmap(mat8U));
}
}
}
}
}
this.Text += (DateTime.Now - now).TotalMilliseconds.ToString();
int index = 0;
listBmp.ForEach(b => b.Save(Application.StartupPath + @"\bigbmp\" + (index++) + ".bmp", ImageFormat.Bmp));
}
public static Mat bmpToMat(Bitmap srcbit)
{
int iwidth = srcbit.Width;
int iheight = srcbit.Height;
int iByte = iwidth * iheight * 3;
byte[] result = new byte[iByte];
int step;
Rectangle rect = new Rectangle(0, 0, iwidth, iheight);
BitmapData bmpData = srcbit.LockBits(rect, ImageLockMode.ReadWrite, srcbit.PixelFormat);
IntPtr iPtr = bmpData.Scan0;
Marshal.Copy(iPtr, result, 0, iByte);
step = bmpData.Stride;
srcbit.UnlockBits(bmpData);
return new Mat(srcbit.Height, srcbit.Width, new MatType(MatType.CV_8UC3), result, step);
}
public static Mat bmpBuffToBat(byte[] buff,int height,int width)
{
var src = new Mat(height, width, MatType.CV_8UC3);
int length = height * width * 3; // or src.Height * src.Step;
Marshal.Copy(buff, 0, src.Data, length);
return src;
}
public static byte[] matToBmpBuff(string fullpath, int height, int width)
{
Mat mat = Cv2.ImRead(fullpath);//Mat默认通道顺序是Bgr和Bitmap一致
var bytes = new byte[mat.Total() * 3];//这里必须乘以通道数不然数组越界也可以用w*h*c差不多
Marshal.Copy(mat.Data, bytes, 0, bytes.Length);
return bytes;
}
}
}