MainWindow.xaml.cs 156 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using System.Windows.Controls;
  8. using System.Windows.Data;
  9. using System.Windows.Documents;
  10. using System.Windows.Input;
  11. using System.Windows.Media;
  12. using System.Windows.Media.Imaging;
  13. using System.Windows.Navigation;
  14. using System.Windows.Shapes;
  15. using System.IO;
  16. using Microsoft.Win32;
  17. using System.Configuration;
  18. using WinForm = System.Windows.Forms;
  19. using System.Windows.Media.Animation;
  20. using System.Threading;
  21. using System.Data;
  22. using System.Data.SQLite;
  23. using AIRS.usercontrol;
  24. using Newtonsoft.Json;
  25. using Newtonsoft.Json.Linq;
  26. namespace AIRS
  27. {
  28. /// <summary>
  29. /// MainWindow.xaml 的交互逻辑
  30. /// </summary>
  31. public partial class MainWindow : Window
  32. {
  33. #region 系统变量
  34. //程序工作目录
  35. private string path = Directory.GetCurrentDirectory();
  36. private AutoResetEvent autoResetEvent = new AutoResetEvent(false);
  37. //数据库
  38. SQLiteConnection conn = new SQLiteConnection();
  39. SQLiteConnectionStringBuilder connstr = new SQLiteConnectionStringBuilder();
  40. //SQLiteDataAdapter da = new SQLiteDataAdapter();
  41. public string lname = "";
  42. public string password = "";//密码
  43. //public string entryclerk = "";//录入员
  44. private List<Label> list_lblsteel = new List<Label>();
  45. private List<Label> list_lblstandard = new List<Label>();
  46. private List<Label> list_lbltestitems = new List<Label>();
  47. //private List<String> filenames = new List<String>();
  48. private Dictionary<String, List<String>> page_filenames = new Dictionary<string, List<string>>();
  49. private Dictionary<String, List<String>> image_name = new Dictionary<string, List<string>>();
  50. //临时存放图片文件名
  51. private List<String> fns = new List<String>();
  52. //临时存放图片文件名
  53. private List<String> fns_name = new List<String>();
  54. private Dictionary<String, List<Picturebox>> dic_pic = new Dictionary<String, List<Picturebox>>();
  55. private Dictionary<String, double> pich = new Dictionary<String, double>();
  56. private Dictionary<String, double> picw = new Dictionary<String, double>();
  57. private Dictionary<String, double> zoom = new Dictionary<String, double>();
  58. private int canvas_height = 0;
  59. private Boolean mousedown = false;
  60. //cantab标签字典
  61. private Dictionary<String, PageControl> listpage = new Dictionary<String, PageControl>();
  62. private Dictionary<String, HomePageEntry> listhompage = new Dictionary<string, HomePageEntry>();
  63. private List<String> listpagename = new List<String>();
  64. private String selectpage = "首页";
  65. //蒙板
  66. Grid layer = new Grid() { Background = new SolidColorBrush(Color.FromArgb(128, 255, 255, 255)) };
  67. //检测
  68. private static int test_index = 0;
  69. //全屏返回
  70. private int full_return_index = 0;
  71. //钢种
  72. private string YGXZDZ = "亚共析钢带状";
  73. private int DZ_direction = 0;//带状方向默认纵向为0
  74. DetectParams detectParams = null;//带状横向或纵向null为纵向
  75. List<string> deletelabel = new List<string>();//所有菜单中选项卡
  76. //选项卡宽度,本机为选项卡宽为142,任务标签共计157,窗体1350,142*8=1136,1350-1136=214,214-157=57,
  77. //选项卡宽为(1350-157-57)/142
  78. private int tab_num = 0;//tab_num = 8;
  79. DateTime time_start_grade = Convert.ToDateTime(DateTime.Now);
  80. //评级状态
  81. Boolean grade_state = false;
  82. //标尺长度
  83. double rulerl = 0;
  84. String ret_shape = "";
  85. double ret_dia = 0;
  86. int ret_mul = 0;
  87. //正在评级的selectpage
  88. String grade_selectpage = "";
  89. private SynchronizationContext synchronizationContext = null;
  90. //评级统计
  91. GradeCount gc = null;
  92. //是否强制关闭检测
  93. bool isforced = false;
  94. #endregion
  95. #region 构造函数
  96. /// <summary>
  97. /// 构造函数,加载界面和添加事件
  98. /// </summary>
  99. public MainWindow()
  100. {
  101. InitializeComponent();
  102. //窗体变化事件和最大化
  103. this.SizeChanged += new System.Windows.SizeChangedEventHandler(MainWindow_Resize);
  104. this.WindowState = WindowState.Maximized;
  105. //为自定义控件增加事件
  106. this.pagetitle.imgmin1.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(window_min_PreviewMouseLeftButtonDown);
  107. this.pagetitle.imgmax1.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(window_max_PreviewMouseLeftButtonDown);
  108. this.pagetitle.imgclosed1.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(window_close_PreviewMouseLeftButtonDown);
  109. this.pagetitle.start_grade.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(start_grade);
  110. this.pagetitle.cangradesum.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(GradeSum);
  111. this.subtitle.sldzoom.ValueChanged += new System.Windows.RoutedPropertyChangedEventHandler<double>(zoomchange);
  112. this.pagetitle.canfill.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(canfill);
  113. this.pagefirst.txtinput.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(openfiles);
  114. this.pbw.btncancle.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(progressbar_cancle);
  115. this.pbw.canvas_min.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(progressbar_canvas_min);
  116. this.minpbw.canvas_changeMax.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(minprogressbar_canvas_max);
  117. this.pagetitle.task.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(lblhomepage_PreviewMouseLeftButtonDown);
  118. this.completetest.BtnOK.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(completetest_PreviewMouseLeftButtonDown);
  119. //this.pagetitle.field.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(draw_viewport);
  120. //this.pagetitle.lblmdfpwd.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(lblmdfpwd_uppassword);
  121. //this.pagetitle.lblchange.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(lblchange_cut);
  122. this.pagetitle.history.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(history_down);//历史评级单击事件
  123. //this.pagetitle.out_export.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(out_report);//生成报告
  124. this.forcedcancelusercontrol.fBtnOK.PreviewMouseLeftButtonDown+= new System.Windows.Input.MouseButtonEventHandler(forcedOK);//取人强制关闭当前检测
  125. this.forcedcancelusercontrol.fBtnExit.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(forcedCancel);//取人强制关闭当前检测
  126. cmd.Click += (obj, args) => { menu.IsOpen = true; };
  127. //蒙板
  128. this.root.Children.Add(layer);
  129. //子控件调用父控件的函数(子控件控制父控件的属性等)
  130. LoginWindow.TestEvent += func;
  131. Sample_Information_Enter.MBEvent += func;
  132. Page_FirstControl.ShowpageEvent += screen_label;
  133. GradeCount.SelectGradeEvent += GradeGradeEvent;
  134. //线程间同步上下文
  135. this.synchronizationContext = SynchronizationContext.Current;
  136. }
  137. #endregion
  138. #region 评级统计及事件
  139. private void GradeSum(object sender,MouseButtonEventArgs e)
  140. {
  141. Dictionary<String, int> gradesum = new Dictionary<String, int>();
  142. Dictionary<String, String> aiRES = new Dictionary<String, String>();
  143. for (int i=0;i<page_filenames[selectpage].Count;i++)
  144. {
  145. String filename_ai = System.IO.Path.GetDirectoryName(page_filenames[selectpage][i]) + "\\AI\\" +
  146. System.IO.Path.GetFileNameWithoutExtension(page_filenames[selectpage][i]) + ".ai";
  147. if(File.Exists(filename_ai))
  148. {
  149. using (System.IO.StreamReader _file = System.IO.File.OpenText(filename_ai))
  150. {
  151. using (JsonTextReader reader = new JsonTextReader(_file))
  152. {
  153. JObject o = (JObject)JToken.ReadFrom(reader);
  154. JObject content = JObject.Parse(o["content"].ToString());
  155. JObject details = JObject.Parse(content["details"].ToString());
  156. if (details.Property("value") != null)
  157. {
  158. //zm:
  159. aiRES.Add(System.IO.Path.GetFileName(page_filenames[selectpage][i]), content["title"].ToString());
  160. string key = details["value"].ToString();
  161. if (gradesum.ContainsKey(key))
  162. {
  163. gradesum[key]++;
  164. }
  165. else
  166. {
  167. gradesum.Add(key, 1);
  168. }
  169. }
  170. else
  171. {
  172. reader.Close();
  173. _file.Close();
  174. _file.Dispose();
  175. break;
  176. }
  177. reader.Close();
  178. _file.Close();
  179. _file.Dispose();
  180. }
  181. }
  182. }
  183. }
  184. if(gradesum.Count>0)
  185. {
  186. gc = new GradeCount();
  187. gc.aiRES = aiRES;
  188. gc.gradesum = gradesum;
  189. gc.gradetitle = image_name[selectpage][3];
  190. gc.gradename = image_name[selectpage][0] + " - " + image_name[selectpage][2];
  191. gc.Owner = this;
  192. gc.ShowInTaskbar = false;
  193. gc.Show();
  194. }
  195. else
  196. {
  197. MessageBox.Show("该文件夹下图片还没有进行评级或没有对应参数,请评级后再进行评级检测!");
  198. }
  199. }
  200. private void GradeGradeEvent(List<string> listgrade, Boolean state)
  201. {
  202. if(state)
  203. {
  204. if(gc!=null)
  205. {
  206. gc.Close();
  207. gc = null;
  208. }
  209. }
  210. int canvas_height = 0;
  211. //判断一行能存放几个pic
  212. int displaynum = Convert.ToInt32(Math.Floor(this.showpic.Width / (picw[selectpage] * (1 + zoom[selectpage]) + 20)));
  213. if (displaynum == 0)
  214. {
  215. displaynum = 1;
  216. }
  217. int ii = 0;
  218. for (int i = 0; i < dic_pic[selectpage].Count; i++)
  219. {
  220. if(listgrade.Contains(dic_pic[selectpage][i].grade_value) && state==false)
  221. {
  222. dic_pic[selectpage][i].Visibility = Visibility.Hidden;
  223. ii++;
  224. continue;
  225. }
  226. dic_pic[selectpage][i].Visibility = Visibility.Visible;
  227. dic_pic[selectpage][i].Width = picw[selectpage] * (1 + zoom[selectpage]);
  228. dic_pic[selectpage][i].Height = pich[selectpage] * (1 + zoom[selectpage]);
  229. dic_pic[selectpage][i].SetValue(Canvas.TopProperty, 5.0 + ((i-ii) / displaynum) * (dic_pic[selectpage][i].Height + 10.0));
  230. dic_pic[selectpage][i].SetValue(Canvas.LeftProperty, 20.0 + ((i-ii) % displaynum) * (dic_pic[selectpage][i].Width + 20.0));
  231. dic_pic[selectpage][i].SetValue(Canvas.RightProperty, double.NaN);
  232. dic_pic[selectpage][i].SetValue(Canvas.BottomProperty, double.NaN);
  233. canvas_height = Convert.ToInt32(10 + ((i-ii) / displaynum) * (dic_pic[selectpage][i].Height + 10) + dic_pic[selectpage][i].Height);
  234. }
  235. (showpic.FindName("can" + selectpage) as Canvas).Height = canvas_height;
  236. this.showpic.Height = canvas_height;
  237. }
  238. #endregion
  239. #region 视场截取
  240. private void draw_viewport(object sender, MouseButtonEventArgs e)
  241. {
  242. //打开视场截取对话框
  243. FeildParam fp = new FeildParam();
  244. fp.Owner = this;
  245. fp.ShowInTaskbar = false;
  246. fp.standard = image_name[selectpage][1];
  247. fp.ShowDialog();
  248. //取消
  249. if(fp.DialogResult==false)
  250. {
  251. return;
  252. }
  253. //确认返回获取参数
  254. ret_shape = fp.ret_shape;
  255. ret_dia = fp.ret_dia;
  256. ret_mul = fp.ret_mul;
  257. rulerl = 0;
  258. //创建AI文件夹
  259. if (!Directory.Exists(image_name[selectpage][6] + "\\AI"))
  260. {
  261. Directory.CreateDirectory(image_name[selectpage][6] + "\\AI");
  262. }
  263. //开启线程等待返回图片标尺长度的相素长度
  264. Thread viewfield = new Thread(view_field);
  265. viewfield.Start();
  266. }
  267. private void view_field()
  268. {
  269. //调用Python环境命令
  270. PythonExecutor pythonExecutorRuler = new PythonExecutor(synchronizationContext, @"D:\vi\vi_server\scale_test.py");
  271. pythonExecutorRuler.ReceivedControlData += this.ReceivedControlRuler;
  272. //画视场
  273. for (int i = 0; i < dic_pic[selectpage].Count; i++)
  274. {
  275. //获取标尺长度
  276. if (this.rulerl == 0)
  277. {
  278. pythonExecutorRuler.executePy(this.lblhomepage, page_filenames[selectpage][i]);
  279. autoResetEvent.WaitOne();
  280. }
  281. this.Dispatcher.Invoke(new Action(() =>
  282. {
  283. double ret_width = (ret_dia * 1000 / ret_mul) * this.rulerl / ret_mul;
  284. double radius = (ret_width / 2) / dic_pic[selectpage][i].zoom_key;
  285. //这里暂时定为圆
  286. if (ret_shape == "Circle")
  287. {
  288. dic_pic[selectpage][i].cir_rect = "Circle";
  289. dic_pic[selectpage][i].circle.RadiusX = radius;
  290. dic_pic[selectpage][i].circle.RadiusY = radius;
  291. dic_pic[selectpage][i].field.Fill = new SolidColorBrush(Color.FromArgb(0x40, 0xFF, 0x00, 0x00));
  292. dic_pic[selectpage][i].fieldr.Fill = new SolidColorBrush(Color.FromArgb(0x40, 0xFF, 0x00, 0x00));
  293. dic_pic[selectpage][i].Frozen = false;
  294. dic_pic[selectpage][i].circle.Center = new Point(dic_pic[selectpage][i].img.Width / 2, dic_pic[selectpage][i].img.Height / 2);
  295. dic_pic[selectpage][i].field.Visibility = Visibility.Visible;
  296. dic_pic[selectpage][i].fieldr.Visibility = Visibility.Hidden;
  297. }
  298. else if (ret_shape == "Rectangle")
  299. {
  300. dic_pic[selectpage][i].cir_rect = "Rectangle";
  301. dic_pic[selectpage][i].rectrr.Rect = new Rect(
  302. dic_pic[selectpage][i].img.Width / 2 - radius,
  303. dic_pic[selectpage][i].img.Height / 2 - radius,
  304. radius * 2, radius * 2);
  305. dic_pic[selectpage][i].field.Fill = new SolidColorBrush(Color.FromArgb(0x40, 0xFF, 0x00, 0x00));
  306. dic_pic[selectpage][i].fieldr.Fill = new SolidColorBrush(Color.FromArgb(0x40, 0xFF, 0x00, 0x00));
  307. dic_pic[selectpage][i].Frozen = false;
  308. dic_pic[selectpage][i].field.Visibility = Visibility.Hidden;
  309. dic_pic[selectpage][i].fieldr.Visibility = Visibility.Visible;
  310. }
  311. }));
  312. }
  313. }
  314. /// <summary>
  315. /// 回调接收参数,参数固定
  316. /// </summary>
  317. /// <param name="o">回调返回结果</param>
  318. private void ReceivedControlRuler(object o)
  319. {
  320. try
  321. {
  322. if (o != null)
  323. {
  324. ControlData controlData = o as ControlData;/////
  325. if (controlData != null)
  326. {
  327. //下面示例需要重写,需要定制化,
  328. //控件是调用时传入的
  329. if (controlData.Control is Label)//是label,在label上显示
  330. {
  331. Label lbl = controlData.Control as Label;
  332. //lbl.Content += controlData.DataString + Environment.NewLine;
  333. switch (controlData.CallbackDataType)
  334. {
  335. //返回数据是执行的脚本指定
  336. case CallbackDataType.Command:
  337. //txt.Text += "Command:" + controlData.DataString + Environment.NewLine;
  338. //txt.ScrollToEnd();
  339. break;
  340. //返回数据是参数调用接口错误
  341. case CallbackDataType.ParameterError:
  342. //txt.Text += controlData.DataString + Environment.NewLine;
  343. //txt.ScrollToEnd();
  344. break;
  345. //返回是数据是最终想要的结果
  346. case CallbackDataType.ReturnData:
  347. this.rulerl =Convert.ToDouble( controlData.DataString);
  348. autoResetEvent.Set();
  349. break;
  350. //其他就是info,是过程中的日志信息、ai调用内部错误信息等
  351. default:
  352. //其他的中间过程日志信息先不显示
  353. break;
  354. }
  355. }
  356. }
  357. }
  358. }
  359. catch (Exception e)
  360. {
  361. Log.Info("出现错误!");
  362. Log.Info("出错信息为:" + e.Message);
  363. autoResetEvent.Set();
  364. }
  365. finally
  366. {
  367. }
  368. }
  369. #endregion
  370. #region 时间返回
  371. /// <summary>
  372. /// 截取时间
  373. /// </summary>
  374. /// <returns></returns>
  375. private string splittime(string str)
  376. {
  377. string[] strall = str.Split('0');
  378. if (strall[0] == "")
  379. {
  380. return strall[1];
  381. }
  382. else
  383. {
  384. return str;
  385. }
  386. }
  387. /// <summary>
  388. /// 计算耗时
  389. /// </summary>
  390. /// <param name="DateTime1"></param>
  391. /// <param name="DateTime2"></param>
  392. /// <returns></returns>
  393. public string TimeDiff(DateTime DateTime1, DateTime DateTime2)
  394. {
  395. //string dateDiff = null; //有日期时候用到
  396. string timeDiff = null;
  397. try
  398. {
  399. TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
  400. TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
  401. TimeSpan ts = ts1.Subtract(ts2).Duration();
  402. // dateDiff = ts.Days.ToString() + "天" + ts.Hours.ToString() + "小时" + ts.Minutes.ToString() + "分钟" + ts.Seconds.ToString() + "秒"; //有日期的时候
  403. if (ts.Hours.ToString("00") == "00"&& ts.Minutes.ToString("00") == "00")
  404. {
  405. timeDiff = splittime(ts.Seconds.ToString("00")) + "秒";
  406. }
  407. else if (ts.Hours.ToString("00") == "00")
  408. {
  409. timeDiff = splittime(ts.Minutes.ToString("00")) + "分" + splittime(ts.Seconds.ToString("00")) + "秒";
  410. }
  411. else
  412. {
  413. timeDiff = splittime(ts.Hours.ToString("00")) + "时" + splittime(ts.Minutes.ToString("00")) + "分" + splittime(ts.Seconds.ToString("00")) + "秒";
  414. }
  415. // timeDiff = ts.Hours.ToString("00") + "时" + ts.Minutes.ToString("00") + "分" + ts.Seconds.ToString("00")+"秒";
  416. }
  417. catch
  418. {
  419. }
  420. return timeDiff;
  421. }
  422. #endregion
  423. #region 评级时对标题栏按钮的操作
  424. /// <summary>
  425. /// 评级时或组织识别时是标头暗亮度度当前 设置变暗为变亮
  426. /// </summary>
  427. private void Header_Opacity_ChangeBright()
  428. {
  429. this.pagetitle.task.IsEnabled = true;
  430. this.pagetitle.task.Opacity = 1;
  431. this.pagetitle.start_grade.IsEnabled = true;
  432. this.pagetitle.start_grade.Opacity = 1;
  433. //this.pagetitle.field.IsEnabled = true;
  434. //this.pagetitle.field.Opacity = 1;
  435. this.pagetitle.cangradesum.IsEnabled = true;
  436. this.pagetitle.cangradesum.Opacity = 1;
  437. this.pagetitle.canfill.IsEnabled = true;
  438. this.pagetitle.canfill.Opacity = 1;
  439. //this.pagetitle.out_export.IsEnabled = true;
  440. //this.pagetitle.out_export.Opacity = 1;
  441. this.pagetitle.history.IsEnabled = true;
  442. this.pagetitle.history.Opacity = 1;
  443. }
  444. /// <summary>
  445. /// 评级时或组织识别时是标头暗亮度度当前 设置变暗为变暗
  446. /// </summary>
  447. private void Header_Opacity_ChangeDark()
  448. {
  449. this.pagetitle.task.IsEnabled = true;
  450. this.pagetitle.task.Opacity = 1;
  451. this.pagetitle.start_grade.IsEnabled = false;
  452. this.pagetitle.start_grade.Opacity = 0.5;
  453. //this.pagetitle.field.IsEnabled = false;
  454. //this.pagetitle.field.Opacity = 0.5;
  455. this.pagetitle.cangradesum.IsEnabled = false;
  456. this.pagetitle.cangradesum.Opacity = 0.5;
  457. this.pagetitle.canfill.IsEnabled = true;
  458. this.pagetitle.canfill.Opacity = 1;
  459. //this.pagetitle.out_export.IsEnabled = true;
  460. //this.pagetitle.out_export.Opacity = 1;
  461. this.pagetitle.history.IsEnabled = true;
  462. this.pagetitle.history.Opacity = 1;
  463. }
  464. /// <summary>
  465. /// 评级时或组织识别时是所有标题按钮变暗并禁用
  466. /// </summary>
  467. private void Header_Opacity_All_ChangeDark()
  468. {
  469. this.pagetitle.task.IsEnabled = false;
  470. this.pagetitle.task.Opacity = 0.5;
  471. this.pagetitle.start_grade.IsEnabled = false;
  472. this.pagetitle.start_grade.Opacity = 0.5;
  473. //this.pagetitle.field.IsEnabled = false;
  474. //this.pagetitle.field.Opacity = 0.5;
  475. this.pagetitle.cangradesum.IsEnabled = false;
  476. this.pagetitle.cangradesum.Opacity = 0.5;
  477. this.pagetitle.canfill.IsEnabled = false;
  478. this.pagetitle.canfill.Opacity = 0.5;
  479. //this.pagetitle.out_export.IsEnabled = false;
  480. //this.pagetitle.out_export.Opacity = 0.5;
  481. this.pagetitle.history.IsEnabled = false;
  482. this.pagetitle.history.Opacity = 0.5;
  483. }
  484. #endregion
  485. #region 进度条取消操作
  486. /// <summary>
  487. /// 进度条取消操作
  488. /// </summary>
  489. /// <param name="sender"></param>
  490. /// <param name="e"></param>
  491. private void progressbar_cancle(object sender, MouseButtonEventArgs e)
  492. {
  493. if (isforced==false)
  494. {
  495. MessageBoxResult result = MessageBox.Show("确定要取消当前操作?", "询问", MessageBoxButton.YesNo, MessageBoxImage.Question);
  496. if (result == MessageBoxResult.Yes)
  497. {
  498. // do something
  499. PythonExecutor pythonExecutor = new PythonExecutor(SynchronizationContext.Current);
  500. pythonExecutor.stop();
  501. ////评级停止,使评级状态置false
  502. //grade_state = false;
  503. ////允许关闭
  504. //pagetitle.isclosed = true;
  505. //正在进行AI检测,请稍候...
  506. this.pbw.progbar_msg.Content = "正在取消,请稍后...";
  507. //禁用进度条取消按钮
  508. // this.pbw.btncancle.IsEnabled = false;
  509. isforced = true;
  510. }
  511. }
  512. else
  513. {
  514. this.pbw.Visibility = Visibility.Hidden;
  515. ForcedCancelUC.Visibility = Visibility.Visible;
  516. }
  517. }
  518. #endregion
  519. #region 确认强制关闭当前检测
  520. /// <summary>
  521. ///
  522. /// </summary>
  523. /// <param name="sender"></param>
  524. /// <param name="e"></param>
  525. private void forcedOK(object sender, MouseButtonEventArgs e)
  526. {
  527. ThreadExitis("python", true);
  528. //是否强制关闭
  529. isforced = false;
  530. //评级停止,使评级状态置false
  531. grade_state = false;
  532. //允许关闭
  533. pagetitle.isclosed = true;
  534. ForcedCancelUC.Visibility = Visibility.Hidden;
  535. //正在进行AI检测,请稍候...
  536. this.pbw.progbar_msg.Content = "正在进行AI检测,请稍候...";
  537. Header_Opacity_ChangeBright();
  538. }
  539. #endregion
  540. #region 强行杀死线程
  541. /// <summary>
  542. ///
  543. /// </summary>
  544. /// <param name="sender"></param>
  545. /// <param name="e"></param>
  546. public bool ThreadExitis(string threadName, bool kill)
  547. {
  548. bool bo = false;
  549. try
  550. {
  551. System.Diagnostics.Process[] processList = System.Diagnostics.Process.GetProcesses();
  552. foreach (System.Diagnostics.Process process in processList)
  553. {
  554. if (process.ProcessName.ToLower() == threadName.ToLower())
  555. {
  556. if (kill)
  557. {
  558. bo = false;
  559. process.Kill(); //结束进程
  560. //Console.WriteLine("杀死了 " + process.ProcessName);
  561. }
  562. else
  563. {
  564. bo = true;
  565. }
  566. }
  567. }
  568. }
  569. catch(Exception e)
  570. {
  571. MessageBox.Show("杀死线程出现问题"+e.Message);
  572. }
  573. return bo;
  574. }
  575. #endregion
  576. #region 取消强制关闭当前检测
  577. /// <summary>
  578. ///
  579. /// </summary>
  580. /// <param name="sender"></param>
  581. /// <param name="e"></param>
  582. private void forcedCancel(object sender, MouseButtonEventArgs e)
  583. {
  584. //MessageBox.Show("强制取消");
  585. this.ForcedCancelUC.Visibility = Visibility.Hidden;
  586. this.pbw.Visibility = Visibility.Visible;
  587. //isforced = false;
  588. }
  589. #endregion
  590. #region 进度条最小化
  591. /// <summary>
  592. /// 进度条最小化
  593. /// </summary>
  594. /// <param name="sender"></param>
  595. /// <param name="e"></param>
  596. private void progressbar_canvas_min(object sender, MouseButtonEventArgs e)
  597. {
  598. this.pbw.Visibility = Visibility.Hidden;
  599. this.minpbw.Visibility = Visibility.Visible;
  600. }
  601. #endregion
  602. #region 进度条从最小化变成最大化
  603. /// <summary>
  604. /// 进度条从最小化变成最大化
  605. /// </summary>
  606. /// <param name="sender"></param>
  607. /// <param name="e"></param>
  608. private void minprogressbar_canvas_max(object sender, MouseButtonEventArgs e)
  609. {
  610. this.pbw.Visibility = Visibility.Visible;
  611. this.minpbw.Visibility = Visibility.Hidden;
  612. }
  613. #endregion
  614. #region 录入下显示对应的所有标签
  615. /// <summary>
  616. /// 筛选标签页
  617. /// </summary>
  618. /// <param name="testitem"></param>
  619. private void screen_label(string testitem)
  620. {
  621. double count = 0;
  622. //清除所有标签
  623. this.pagefirst.showinfo.Children.Clear();
  624. int index = 0;
  625. for (int i = 0; i < listhompage.Count; i++)
  626. {
  627. //查找包含testitem的标签放入容器中
  628. if (listpage[listpagename[i]].Tag.ToString() == testitem)
  629. {
  630. listhompage[listpagename[i]].SetValue(Canvas.TopProperty, count);
  631. this.pagefirst.showinfo.Children.Add(listhompage[listpagename[i]]);
  632. this.pagefirst.showinfo.RegisterName("hp" + listpagename[i], listhompage[listpagename[i]]);
  633. this.pagefirst.showinfo.Height = count;
  634. index++;
  635. //更新录入下显示
  636. listhompage[listpagename[i]].homepagecanvas.UpdateLayout();
  637. listhompage[listpagename[i]].c_header.UpdateLayout();
  638. listhompage[listpagename[i]].c_footer.UpdateLayout();
  639. listhompage[listpagename[i]].c_header.Height = listhompage[listpagename[i]].lbltestmechine.ActualHeight + 2;
  640. listhompage[listpagename[i]].c_header.SetValue(Canvas.TopProperty, 0.0);
  641. listhompage[listpagename[i]].c_header.SetValue(Canvas.LeftProperty, 0.0);
  642. listhompage[listpagename[i]].c_header.SetValue(Canvas.RightProperty, double.NaN);
  643. listhompage[listpagename[i]].c_header.SetValue(Canvas.BottomProperty, double.NaN);
  644. listhompage[listpagename[i]].c_footer.SetValue(Canvas.TopProperty, listhompage[listpagename[i]].lbltestmechine.ActualHeight + 4.0);
  645. listhompage[listpagename[i]].c_footer.SetValue(Canvas.LeftProperty, 0.0);
  646. listhompage[listpagename[i]].c_footer.SetValue(Canvas.RightProperty, double.NaN);
  647. listhompage[listpagename[i]].c_footer.SetValue(Canvas.BottomProperty, double.NaN);
  648. listhompage[listpagename[i]].homepagecanvas.Height = listhompage[listpagename[i]].lbltestmechine.ActualHeight + listhompage[listpagename[i]].lblpicpath.ActualHeight + 6;
  649. if (selectpage != "首页")
  650. {
  651. if (image_name[selectpage][0] == "夹杂物")
  652. {
  653. Label lbl = new Label();
  654. lbl.FontSize = 12;
  655. lbl.Content = "夹杂物种类:" + image_name[selectpage][11];
  656. lbl.Foreground = new SolidColorBrush(Colors.White);
  657. lbl.SetValue(Canvas.TopProperty, listhompage[listpagename[i]].homepagecanvas.Height - 2.0);
  658. lbl.SetValue(Canvas.LeftProperty, -1.0);
  659. lbl.SetValue(Canvas.RightProperty, double.NaN);
  660. lbl.SetValue(Canvas.BottomProperty, double.NaN);
  661. listhompage[listpagename[i]].homepagecanvas.Height += 20;
  662. listhompage[listpagename[i]].homepagecanvas.Children.Add(lbl);
  663. }
  664. }
  665. count = count + listhompage[listpagename[i]].ActualHeight + 5;
  666. }
  667. }
  668. }
  669. #endregion
  670. #region 移除蒙板
  671. /// <summary>
  672. /// 移除蒙板
  673. /// </summary>
  674. public void func()
  675. {
  676. this.root.Children.Remove(layer);
  677. }
  678. #endregion
  679. #region 开始检测
  680. /// <summary>
  681. /// 开始检测事件
  682. /// </summary>
  683. /// <param name="sender"></param>
  684. /// <param name="e"></param>
  685. private void start_grade(object sender, MouseButtonEventArgs e)
  686. {
  687. //标题按钮不可用且变暗
  688. Header_Opacity_ChangeDark();
  689. //禁用关闭按钮
  690. pagetitle.isclosed = false;
  691. //初始化脚本执行器
  692. PythonExecutor pythonExecutor = new PythonExecutor(SynchronizationContext.Current);
  693. pythonExecutor.ReceivedControlData += ReceivedControlData;
  694. //钢钟catagory
  695. string ZT_H = image_name[selectpage][7];
  696. //检测项目items
  697. string G_XZ = image_name[selectpage][8];
  698. string steel = image_name[selectpage][0];
  699. string testitems_param = image_name[selectpage][9];//不是魏氏就为空是就是json{'YBG-W': {'w_cls':'wa'}}
  700. //更改评级状态
  701. grade_state = true;
  702. //计时
  703. time_start_grade = Convert.ToDateTime(DateTime.Now);
  704. //将picturebox的Frozen置为True,写JSON文件
  705. if (Directory.Exists(image_name[selectpage][6] + "\\AI"))
  706. {
  707. for (int i = 0; i < dic_pic[selectpage].Count; i++)
  708. {
  709. if(dic_pic[selectpage][i].cir_rect=="")
  710. {
  711. break;
  712. }
  713. dic_pic[selectpage][i].Frozen = true;
  714. //写fld文件
  715. String field = System.IO.Path.GetDirectoryName(page_filenames[selectpage][i]) + "\\AI\\";
  716. field = field + System.IO.Path.GetFileNameWithoutExtension(page_filenames[selectpage][i]) + ".fld";
  717. StringWriter sw = new StringWriter();
  718. JsonTextWriter writer = new JsonTextWriter(sw);
  719. writer.WriteStartObject();
  720. writer.WritePropertyName("viewport");
  721. writer.WriteStartObject();
  722. writer.WritePropertyName("type");
  723. if (dic_pic[selectpage][i].cir_rect == "Circle")
  724. {
  725. writer.WriteValue("C");
  726. writer.WritePropertyName("x");
  727. writer.WriteValue((dic_pic[selectpage][i].circle.Center.X - dic_pic[selectpage][i].circle.RadiusX - dic_pic[selectpage][i].rect_left) * dic_pic[selectpage][i].zoom_key);
  728. writer.WritePropertyName("y");
  729. writer.WriteValue((dic_pic[selectpage][i].circle.Center.Y - dic_pic[selectpage][i].circle.RadiusY - dic_pic[selectpage][i].rect_top) * dic_pic[selectpage][i].zoom_key);
  730. writer.WritePropertyName("w");
  731. writer.WriteValue((dic_pic[selectpage][i].circle.RadiusX * 2) * dic_pic[selectpage][i].zoom_key);
  732. writer.WritePropertyName("h");
  733. writer.WriteValue((dic_pic[selectpage][i].circle.RadiusY * 2) * dic_pic[selectpage][i].zoom_key);
  734. }
  735. else if (dic_pic[selectpage][i].cir_rect == "Rectangle")
  736. {
  737. writer.WriteValue("R");
  738. writer.WritePropertyName("x");
  739. writer.WriteValue((dic_pic[selectpage][i].rectrr.Rect.Left - dic_pic[selectpage][i].rect_left) * dic_pic[selectpage][i].zoom_key);
  740. writer.WritePropertyName("y");
  741. writer.WriteValue((dic_pic[selectpage][i].rectrr.Rect.Top - dic_pic[selectpage][i].rect_top) * dic_pic[selectpage][i].zoom_key);
  742. writer.WritePropertyName("w");
  743. writer.WriteValue(dic_pic[selectpage][i].rectrr.Rect.Width * dic_pic[selectpage][i].zoom_key);
  744. writer.WritePropertyName("h");
  745. writer.WriteValue(dic_pic[selectpage][i].rectrr.Rect.Height * dic_pic[selectpage][i].zoom_key);
  746. }
  747. writer.WriteEndObject();
  748. writer.WriteEndObject();
  749. StreamWriter wtyeu = new StreamWriter(field);
  750. wtyeu.Write(sw);
  751. wtyeu.Flush();
  752. wtyeu.Close();
  753. writer.Close();
  754. sw.Close();
  755. }
  756. }
  757. //取出正在评级的selectpage
  758. grade_selectpage = selectpage;
  759. //亚共析钢带状
  760. if (YGXZDZ == steel)
  761. {
  762. this.root.Children.Add(layer);
  763. DirectionWindow directionWindow = new DirectionWindow();
  764. directionWindow.Owner = this;
  765. directionWindow.ShowDialog();
  766. if (directionWindow.DialogResult == true)
  767. {
  768. //this.pagetitle.IsEnabled = false;
  769. //this.cantab.IsEnabled = false;
  770. //大进度条
  771. this.pbw.Visibility = Visibility.Visible;
  772. this.pbw.progbar.Maximum = page_filenames[selectpage].Count;
  773. this.pbw.progbar.Value = 0;
  774. this.pbw.progbar_num.Content = "0%";
  775. this.pbw.show_num.Content = "0/" + page_filenames[selectpage].Count.ToString();
  776. //小进度条
  777. //this.minpbw.Visibility = Visibility.Visible;
  778. this.minpbw.minprogbar.Maximum = page_filenames[selectpage].Count;
  779. this.minpbw.minprogbar.Value = 0;
  780. this.minpbw.minprogbar_num.Content = "0%";
  781. this.minpbw.minshow_num.Content = "0/" + page_filenames[selectpage].Count.ToString();
  782. test_index = 0;
  783. DZ_direction = directionWindow.directionnum;
  784. detectParams = new DetectParams
  785. {
  786. YGXG_DZ = new YGXG_DZ { direction = DZ_direction == 0 ? "v" : "h" }
  787. };
  788. pythonExecutor.ibmBzpj(this.pagetitle.lblgrade, ZT_H, G_XZ, detectParams, page_filenames[selectpage]);
  789. //Console.WriteLine(DZ_direction);
  790. func();
  791. return;
  792. }
  793. else
  794. {
  795. //this.pagetitle.IsEnabled = true;
  796. //this.cantab.IsEnabled = true;
  797. func();
  798. return;
  799. }
  800. }
  801. else if ("夹杂物" == steel)
  802. {
  803. //this.pagetitle.IsEnabled = false;
  804. //this.cantab.IsEnabled = false;
  805. //大进度条
  806. this.pbw.Visibility = Visibility.Visible;
  807. this.pbw.progbar.Maximum = page_filenames[selectpage].Count;
  808. this.pbw.progbar.Value = 0;
  809. this.pbw.progbar_num.Content = "0%";
  810. this.pbw.show_num.Content = "0/" + page_filenames[selectpage].Count.ToString();
  811. //小进度条
  812. //this.minpbw.Visibility = Visibility.Visible;
  813. this.minpbw.minprogbar.Maximum = page_filenames[selectpage].Count;
  814. this.minpbw.minprogbar.Value = 0;
  815. this.minpbw.minprogbar_num.Content = "0%";
  816. this.minpbw.minshow_num.Content = "0/" + page_filenames[selectpage].Count.ToString();
  817. test_index = 0;
  818. string incl_para = "{'YGB-JZW': {'output_cls_names': [";
  819. for (int i = 0; i < pagefirst.lincl.Count; i++)
  820. {
  821. incl_para += "'" + pagefirst.lincl[i] + "',";
  822. }
  823. incl_para = incl_para.Substring(0, incl_para.Length - 1);
  824. incl_para += "]}}";
  825. pythonExecutor.ibmBzpj(this.pagetitle.lblgrade, ZT_H, G_XZ, incl_para, page_filenames[selectpage]);
  826. func();
  827. return;
  828. }
  829. else if ("组织识别" == steel)
  830. {
  831. //MessageBox.Show("组织识别");
  832. //显示进度条禁用一些按钮
  833. //this.pagetitle.IsEnabled = false;
  834. //this.cantab.IsEnabled = false;
  835. this.pbw.Visibility = Visibility.Visible;
  836. this.pbw.progbar.Maximum = page_filenames[selectpage].Count;
  837. this.pbw.progbar.Value = 0;
  838. this.pbw.progbar_num.Content = "0%";
  839. this.pbw.show_num.Content = "0/" + page_filenames[selectpage].Count.ToString();
  840. //小进度条
  841. //this.minpbw.Visibility = Visibility.Visible;
  842. this.minpbw.minprogbar.Maximum = page_filenames[selectpage].Count;
  843. this.minpbw.minprogbar.Value = 0;
  844. this.minpbw.minprogbar_num.Content = "0%";
  845. this.minpbw.minshow_num.Content = "0/" + page_filenames[selectpage].Count.ToString();
  846. //序号清零
  847. test_index = 0;
  848. //初始化脚本执行器
  849. //PythonExecutor pythonExecutor = new PythonExecutor(SynchronizationContext.Current);
  850. //pythonExecutor.ReceivedControlData += ReceivedControlData;
  851. ////钢钟catagory
  852. //string ZT_H = image_name[selectpage][7];
  853. ////检测项目items
  854. //string G_XZ = image_name[selectpage][8];
  855. //调用评级检测python接口,第一个参数是返回信息显示的控件
  856. //第二个是钢种catagory,第三个是检测项目items
  857. //第四个是要检测的图像列表,全路径列表
  858. pythonExecutor.ibmZzsb(this.pagetitle.lblgrade, testitems_param, page_filenames[selectpage]);
  859. //pythonExecutor.ibmZzsb(this.pagetitle.lblgrade, page_filenames[selectpage]);
  860. return;
  861. }
  862. else
  863. {
  864. //大进度条
  865. this.pbw.Visibility = Visibility.Visible;
  866. this.pbw.progbar.Maximum = page_filenames[selectpage].Count;
  867. this.pbw.progbar.Value = 0;
  868. this.pbw.progbar_num.Content = "0%";
  869. this.pbw.show_num.Content = "0/" + page_filenames[selectpage].Count.ToString();
  870. //小进度条
  871. this.minpbw.minprogbar.Maximum = page_filenames[selectpage].Count;
  872. this.minpbw.minprogbar.Value = 0;
  873. this.minpbw.minprogbar_num.Content = "0%";
  874. this.minpbw.minshow_num.Content = "0/" + page_filenames[selectpage].Count.ToString();
  875. //序号清零
  876. test_index = 0;
  877. //调用评级检测python接口,第一个参数是返回信息显示的控件
  878. //第二个是钢种catagory,第三个是检测项目items
  879. //第四个是要检测的图像列表,全路径列表
  880. pythonExecutor.ibmBzpj(this.pagetitle.lblgrade, ZT_H, G_XZ, testitems_param, page_filenames[selectpage]);
  881. }
  882. }
  883. #endregion
  884. #region 全屏显示
  885. /// <summary>
  886. /// 全屏显示
  887. /// </summary>
  888. /// <param name="sender"></param>
  889. /// <param name="e"></param>
  890. private void canfill(object sender, MouseButtonEventArgs e)
  891. {
  892. int index = 0;
  893. for (int i = 0; i < dic_pic[selectpage].Count; i++)
  894. {
  895. if (dic_pic[selectpage][i].st == true)
  896. {
  897. index = i;
  898. break;
  899. }
  900. }
  901. open_full_screen_window(index, 0);
  902. }
  903. #endregion
  904. #region 显示图像的缩放滑块
  905. /// <summary>
  906. /// 缩放滑块
  907. /// </summary>
  908. /// <param name="sender"></param>
  909. /// <param name="e"></param>
  910. private void zoomchange(object sender, System.Windows.RoutedPropertyChangedEventArgs<double> e)
  911. {
  912. zoom[selectpage] = Math.Round(e.NewValue, 2) - 1;
  913. piczoom();
  914. }
  915. #endregion
  916. #region 窗体最小化
  917. /// <summary>
  918. /// 最小化
  919. /// </summary>
  920. /// <param name="sender"></param>
  921. /// <param name="e"></param>
  922. private void window_min_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  923. {
  924. this.WindowState = WindowState.Minimized;
  925. }
  926. #endregion
  927. #region 窗体最大化
  928. /// <summary>
  929. /// 最大化
  930. /// </summary>
  931. /// <param name="sender"></param>
  932. /// <param name="e"></param>
  933. private void window_max_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  934. {
  935. if(this.WindowState==WindowState.Maximized)
  936. {
  937. this.WindowState = WindowState.Normal;
  938. }
  939. else
  940. {
  941. this.WindowState = WindowState.Maximized;
  942. }
  943. }
  944. #endregion
  945. #region 关闭窗体
  946. /// <summary>
  947. /// 关闭窗体
  948. /// </summary>
  949. /// <param name="sender"></param>
  950. /// <param name="e"></param>
  951. private void window_close_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  952. {
  953. if (grade_state == false)//是否在检测默认false未检测
  954. {
  955. Application.Current.Shutdown();
  956. }
  957. }
  958. #endregion
  959. #region 录入打开文件
  960. /// <summary>
  961. /// 打开文件
  962. /// </summary>
  963. /// <param name="sender"></param>
  964. /// <param name="e"></param>
  965. private void openfiles(object sender, MouseButtonEventArgs e)
  966. {
  967. //如果钢种、标准和检测项目有一个为空则退出
  968. if (this.pagefirst.steel == "" || this.pagefirst.standard == "" || this.pagefirst.testitems == "")
  969. {
  970. return;
  971. }
  972. //蒙板
  973. this.root.Children.Add(layer);
  974. //弹出录入窗口
  975. Sample_Information_Enter sample = new Sample_Information_Enter();
  976. sample.grade_steel = this.pagefirst.steel;
  977. sample.grade_standard = this.pagefirst.standard;
  978. sample.test_item = this.pagefirst.testitems;
  979. sample.Owner = this;
  980. //弹出窗口不显示在任务栏内
  981. sample.ShowInTaskbar = false;
  982. sample.ShowDialog();
  983. //如果文件夹存在
  984. if (sample.DialogResult == true && Directory.Exists(sample.txt_Picture_catalog))
  985. {
  986. //取当前时分秒作为所有字典内的唯一标识
  987. string pagename = System.DateTime.Now.ToString("hhmmss");
  988. //选中标签页
  989. selectpage = pagename;
  990. //滚动条位置
  991. string ScrollPositionNum = "0";
  992. //存储当前选中显示图片的所有信息
  993. image_name.Add(pagename, new List<string>());
  994. image_name[pagename].Add(sample.grade_steel); //0:钢种
  995. image_name[pagename].Add(sample.grade_standard); //1:标准
  996. image_name[pagename].Add(sample.test_item); //2:检测项目
  997. image_name[pagename].Add(sample.comb_Number_prefix); //3:样品名称
  998. image_name[pagename].Add(sample.comb_Number_suffix); //4:后缀
  999. image_name[pagename].Add(sample.comb_Inspection_instrument); //5:检测仪器
  1000. image_name[pagename].Add(sample.txt_Picture_catalog); //6:文件夹
  1001. image_name[pagename].Add(this.pagefirst.catagory); //7:钢种catagory参数
  1002. image_name[pagename].Add(this.pagefirst.items); //8:检测项目参数
  1003. image_name[pagename].Add(this.pagefirst.testitems_param); //9: param 数据库{'YBG-W': {'w_cls':'wa'}}
  1004. image_name[pagename].Add(ScrollPositionNum); //10:记录每个页面滚动条位置初始为0
  1005. string temp = "";
  1006. for(int m=0;m<pagefirst.lincl.Count;m++)
  1007. {
  1008. temp += pagefirst.lincl[m] + ",";
  1009. }
  1010. temp = temp.Substring(0, temp.Length - 1);
  1011. image_name[pagename].Add(temp); //11:夹杂物种类。
  1012. //录入后将夹杂物的选择项标签删除
  1013. if (pagefirst.Can_Testitems.FindName("inclusion") as Inclusion != null)
  1014. {
  1015. pagefirst.Can_Testitems.Children.Remove(pagefirst.Can_Testitems.FindName("inclusion") as Inclusion);
  1016. pagefirst.Can_Testitems.UnregisterName("inclusion");
  1017. }
  1018. //恢复没被选中显示
  1019. foreach (KeyValuePair<string, PageControl> keyvalue in listpage)
  1020. {
  1021. keyvalue.Value.lblhomepage.Foreground = new SolidColorBrush(Color.FromRgb(0xAA, 0xAA, 0xAA));
  1022. keyvalue.Value.pagegird.Background = new SolidColorBrush(Color.FromRgb(0x43, 0x4e, 0x61));
  1023. }
  1024. //首页没被选中显示
  1025. lblhomepage.Foreground = new SolidColorBrush(Color.FromRgb(0xAA, 0xAA, 0xAA));
  1026. lblhomepage.Background = new SolidColorBrush(Color.FromRgb(0x43, 0x4e, 0x61));
  1027. //隐藏首页显示图像加载页
  1028. pagefirst.Visibility = Visibility.Hidden;
  1029. svshowimg.Visibility = Visibility.Visible;
  1030. //增加标签页信息
  1031. PageControl pagec = new PageControl();
  1032. pagec.lblhomepage.Content = image_name[pagename][3];
  1033. pagec.Tag = image_name[pagename][2];
  1034. pagec.Width = 140;
  1035. pagec.Height = 37;
  1036. pagec.lblhomepage.Tag = pagename;
  1037. pagec.lblhomepage.ToolTip = image_name[selectpage][3];
  1038. pagec.lblhomepage.MouseMove += new System.Windows.Input.MouseEventHandler(mousemove_itemspage);
  1039. pagec.lblhomepage.MouseLeave += new System.Windows.Input.MouseEventHandler(mouseleave_itemspage);
  1040. pagec.lblhomepage.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(select_page);
  1041. pagec.SetValue(Canvas.TopProperty, 3.0);
  1042. pagec.SetValue(Canvas.LeftProperty, 157.0 + listpage.Count * (lblhomepage.Width + 2));
  1043. pagec.SetValue(Canvas.RightProperty, double.NaN);
  1044. pagec.SetValue(Canvas.BottomProperty, double.NaN);
  1045. pagec.lblhomepage.Foreground = new SolidColorBrush(Color.FromRgb(0xF5, 0x9A, 0x23));
  1046. pagec.pagegird.Background = new SolidColorBrush(Color.FromRgb(0x18, 0x25, 0x3C));
  1047. listpage.Add(selectpage, pagec);
  1048. //检测菜单是否超限
  1049. Show_menu();
  1050. //添加标签名称列表
  1051. listpagename.Add(selectpage);
  1052. //在容器中增加标签页
  1053. cantab.Children.Add(pagec);
  1054. //注册控件的名称
  1055. cantab.RegisterName("c" + selectpage, pagec);
  1056. //当标签存放满后的操作
  1057. if (listpagename.Count > tab_num - 1)
  1058. {
  1059. pagec.SetValue(Canvas.TopProperty, 3.0);
  1060. pagec.SetValue(Canvas.LeftProperty, 157.0 + (tab_num - 1) * (140 + 2));
  1061. pagec.SetValue(Canvas.RightProperty, double.NaN);
  1062. pagec.SetValue(Canvas.BottomProperty, double.NaN);
  1063. menu.Items.Clear();
  1064. deletelabel.Clear();
  1065. for (int i = 0; i < listpagename.Count; i++)
  1066. {
  1067. if (listpage.Count > tab_num)
  1068. {
  1069. if (i > (tab_num - 1))
  1070. {
  1071. Label label = new Label();
  1072. label.Content = listpage[listpagename[i - 1]].lblhomepage.Content;//pagename//image_name[pagename][3]
  1073. // label.Name = pagename;
  1074. label.Tag = listpagename[i - 1];
  1075. label.Background = new SolidColorBrush(Color.FromRgb(0x43, 0x4e, 0x61));
  1076. label.Foreground = new SolidColorBrush(Color.FromRgb(0xAA, 0xAA, 0xAA));
  1077. label.HorizontalContentAlignment = HorizontalAlignment.Center;
  1078. label.VerticalContentAlignment=VerticalAlignment.Center;
  1079. label.FontSize = 14;
  1080. label.Height = 37;
  1081. label.Width = 140;
  1082. label.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(ClickMneuLabel);
  1083. deletelabel.Add(listpagename[i - 1]);
  1084. menu.Items.Add(label);
  1085. }
  1086. }
  1087. }
  1088. }
  1089. //添加首页录入信息
  1090. HomePageEntry hpe = new HomePageEntry();
  1091. hpe.txttestmechine.Text = image_name[pagename][5];
  1092. hpe.txtpicpath.Text = image_name[pagename][6];
  1093. hpe.Width = 235;
  1094. hpe.Cursor = Cursors.Hand;
  1095. hpe.Tag = pagename;
  1096. hpe.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(select_Home_Page_Entry);
  1097. hpe.ToolTip = image_name[pagename][6];
  1098. hpe.SetValue(Canvas.TopProperty, 65.0 * listhompage.Count);
  1099. hpe.SetValue(Canvas.LeftProperty, 0.0);
  1100. hpe.SetValue(Canvas.RightProperty, double.NaN);
  1101. hpe.SetValue(Canvas.BottomProperty, double.NaN);
  1102. listhompage.Add(selectpage, hpe);
  1103. //筛选标签
  1104. screen_label(image_name[selectpage][2]);
  1105. //文件夹结构添加
  1106. page_filenames.Add(selectpage, new List<string>());
  1107. //增加显示图像的canvas
  1108. Canvas canvas = new Canvas();
  1109. canvas.Height = 620;
  1110. canvas.Width = 1320;
  1111. canvas.HorizontalAlignment = HorizontalAlignment.Left;
  1112. canvas.VerticalAlignment = VerticalAlignment.Top;
  1113. for (int i = 0; i < showpic.Children.Count; i++)
  1114. {
  1115. showpic.Children[i].Visibility = Visibility.Hidden;
  1116. }
  1117. showpic.Children.Add(canvas);
  1118. showpic.RegisterName("can" + selectpage, canvas);
  1119. DirectoryInfo TheFolder = new DirectoryInfo(image_name[pagename][6]);
  1120. dic_pic.Add(selectpage, new List<Picturebox>());
  1121. //初始化显示倍数为0
  1122. zoom.Add(selectpage, 0);
  1123. //文件清零
  1124. //zm:添加文件名列表
  1125. fns.Clear();
  1126. fns_name.Clear();
  1127. //遍历文件
  1128. foreach (FileInfo NextFile in TheFolder.GetFiles())
  1129. {
  1130. if (System.IO.Path.GetExtension(NextFile.FullName).ToLower() == ".jpg" || System.IO.Path.GetExtension(NextFile.FullName).ToLower() == ".bmp")
  1131. {
  1132. //将文件夹下的图像文件添加到文件列表中
  1133. fns.Add(NextFile.FullName);
  1134. fns_name.Add(NextFile.ToString());
  1135. }
  1136. }
  1137. //禁用所有筛选标签页
  1138. Header_Opacity_All_ChangeDark();
  1139. //如果添加图片数量大于0则启动线程
  1140. if (fns.Count > 0)
  1141. {
  1142. //标签栏禁用
  1143. cantab.IsEnabled = false;
  1144. //关闭按钮禁用
  1145. pagetitle.isclosed = false;
  1146. //开启加载图片线程
  1147. Thread th = new Thread(display_img);
  1148. th.Start();
  1149. }
  1150. }
  1151. else if (!Directory.Exists(sample.txt_Picture_catalog))
  1152. {
  1153. //lbf 2020/10/28
  1154. MessageBox.Show(string.Format("[{0}] 不存在!", sample.txt_Picture_catalog), "提示:", MessageBoxButton.OK, MessageBoxImage.Information);
  1155. return;
  1156. }
  1157. }
  1158. #endregion
  1159. #region 标签页选项卡切换事件
  1160. /// <summary>
  1161. /// 菜单选项卡事件
  1162. /// </summary>
  1163. /// <param name="sender"></param>
  1164. /// <param name="e"></param>
  1165. private void ClickMneuLabel(object sender, MouseButtonEventArgs e)
  1166. {
  1167. Label selectlabel = ((Label)sender);
  1168. String select_page = ((Label)sender).Tag.ToString();
  1169. selectpage = select_page;
  1170. menu.Items.Clear();
  1171. deletelabel.Clear();
  1172. //向菜单选项卡添加菜单多余8个的添加
  1173. for (int i = 0; i < listpagename.Count; i++)
  1174. {
  1175. if (listpage.Count > tab_num)
  1176. {
  1177. if (i > (tab_num - 2))
  1178. {
  1179. Label label = new Label();
  1180. label.Content = listpage[listpagename[i]].lblhomepage.Content;//pagename//image_name[pagename][3]
  1181. // label.Name = pagename;
  1182. label.Tag = listpagename[i];
  1183. label.Background = new SolidColorBrush(Color.FromRgb(0x43, 0x4e, 0x61));
  1184. label.Foreground = new SolidColorBrush(Color.FromRgb(0xAA, 0xAA, 0xAA));
  1185. label.HorizontalContentAlignment = HorizontalAlignment.Center;
  1186. label.VerticalContentAlignment = VerticalAlignment.Center;
  1187. label.FontSize = 14;
  1188. label.Height = 37;
  1189. label.Width = 140;
  1190. label.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(ClickMneuLabel);
  1191. deletelabel.Add(listpagename[i]);
  1192. menu.Items.Add(label);
  1193. // menu.Items.Remove(selectlabel);
  1194. (cantab.FindName("c" + listpagename[i]) as PageControl).Visibility = Visibility.Hidden;
  1195. if (listpagename[i] == selectpage)
  1196. {
  1197. // menu.Items.Add(menu.Items[i]);
  1198. (cantab.FindName("c" + listpagename[i]) as PageControl).Visibility = Visibility.Visible;
  1199. }
  1200. }
  1201. }
  1202. }
  1203. //移除选中的标签
  1204. for (int i = 0; i < deletelabel.Count; i++)
  1205. {
  1206. if (selectpage == deletelabel[i])
  1207. {
  1208. deletelabel.RemoveAt(i);
  1209. menu.Items.RemoveAt(i);
  1210. }
  1211. }
  1212. //恢复没被选中显示
  1213. foreach (KeyValuePair<string, PageControl> keyvalue in listpage)
  1214. {
  1215. keyvalue.Value.lblhomepage.Foreground = new SolidColorBrush(Color.FromRgb(0xAA, 0xAA, 0xAA));
  1216. keyvalue.Value.pagegird.Background = new SolidColorBrush(Color.FromRgb(0x43, 0x4e, 0x61));
  1217. if (keyvalue.Value.lblhomepage.Tag.ToString() == selectpage)
  1218. {
  1219. listpage[select_page].SetValue(Canvas.TopProperty, 3.0);
  1220. listpage[select_page].SetValue(Canvas.LeftProperty, 157.0 + (tab_num - 1) * (142));
  1221. listpage[select_page].SetValue(Canvas.RightProperty, double.NaN);
  1222. listpage[select_page].SetValue(Canvas.BottomProperty, double.NaN);
  1223. }
  1224. }
  1225. //首页没被选中显示
  1226. lblhomepage.Foreground = new SolidColorBrush(Color.FromRgb(0xAA, 0xAA, 0xAA));
  1227. lblhomepage.Background = new SolidColorBrush(Color.FromRgb(0x43, 0x4e, 0x61));
  1228. //隐藏首页显示图像加载页
  1229. pagefirst.Visibility = Visibility.Hidden;
  1230. svshowimg.Visibility = Visibility.Visible;
  1231. //显示选中标签页
  1232. listpage[select_page].lblhomepage.Foreground = new SolidColorBrush(Color.FromRgb(0xF5, 0x9A, 0x23));
  1233. listpage[select_page].pagegird.Background = new SolidColorBrush(Color.FromRgb(0x18, 0x25, 0x3C));
  1234. //显示被选中标签页的图像
  1235. for (int i = 0; i < showpic.Children.Count; i++)
  1236. {
  1237. showpic.Children[i].Visibility = Visibility.Hidden;
  1238. }
  1239. (showpic.FindName("can" + select_page) as Canvas).Visibility = Visibility.Visible;
  1240. this.subtitle.lblfilecount.Content = page_filenames[selectpage].Count.ToString() + "个文件";
  1241. this.subtitle.lblzoom.Visibility = Visibility.Visible;
  1242. this.subtitle.sldzoom.Visibility = Visibility.Visible;
  1243. this.subtitle.lblpercentge.Visibility = Visibility.Visible;
  1244. this.showpic.Height = (showpic.FindName("can" + selectpage) as Canvas).Height;
  1245. this.subtitle.sldzoom.Value = 1 + zoom[selectpage];
  1246. //判断是否是首页
  1247. homepage_disabled();
  1248. }
  1249. #endregion
  1250. #region 标签超长显示菜单选项
  1251. /// <summary>
  1252. /// 菜单选项卡是否显示
  1253. /// </summary>
  1254. public void Show_menu()
  1255. {
  1256. if (listpage.Count > tab_num)//tab_num=8最原始
  1257. {
  1258. menugrid.Visibility = Visibility.Visible;
  1259. }
  1260. else
  1261. {
  1262. menugrid.Visibility = Visibility.Hidden;
  1263. }
  1264. }
  1265. #endregion
  1266. #region 选中首页录入项
  1267. /// <summary>
  1268. /// 选中首页录入项
  1269. /// </summary>
  1270. /// <param name="sender"></param>
  1271. /// <param name="e"></param>
  1272. private void select_Home_Page_Entry(object sender, MouseButtonEventArgs e)
  1273. {
  1274. String select_page = ((HomePageEntry)sender).Tag.ToString();
  1275. selectpage = select_page;
  1276. //恢复没被选中显示
  1277. foreach (KeyValuePair<string, PageControl> keyvalue in listpage)
  1278. {
  1279. keyvalue.Value.lblhomepage.Foreground = new SolidColorBrush(Color.FromRgb(0xAA, 0xAA, 0xAA));
  1280. keyvalue.Value.pagegird.Background = new SolidColorBrush(Color.FromRgb(0x43, 0x4e, 0x61));
  1281. }
  1282. //首页没被选中显示
  1283. lblhomepage.Foreground = new SolidColorBrush(Color.FromRgb(0xAA, 0xAA, 0xAA));
  1284. lblhomepage.Background = new SolidColorBrush(Color.FromRgb(0x43, 0x4e, 0x61));
  1285. //隐藏首页显示图像加载页
  1286. pagefirst.Visibility = Visibility.Hidden;
  1287. svshowimg.Visibility = Visibility.Visible;
  1288. //显示选中标签页
  1289. listpage[select_page].lblhomepage.Foreground = new SolidColorBrush(Color.FromRgb(0xF5, 0x9A, 0x23));
  1290. listpage[select_page].pagegird.Background = new SolidColorBrush(Color.FromRgb(0x18, 0x25, 0x3C));
  1291. //显示或隐藏第八个
  1292. for (int i = 0; i < listpagename.Count; i++)
  1293. {
  1294. if (listpage.Count > tab_num)
  1295. {
  1296. //前面的八个都显示出来,否则点击时下面那句话会隐藏第七个
  1297. (cantab.FindName("c" + listpagename[i]) as PageControl).Visibility = Visibility.Visible;
  1298. if (i > (tab_num - 1))
  1299. {
  1300. (cantab.FindName("c" + listpagename[i]) as PageControl).Visibility = Visibility.Hidden;
  1301. if (listpagename[i] == selectpage)
  1302. {
  1303. listpage[select_page].SetValue(Canvas.TopProperty, 3.0);
  1304. listpage[select_page].SetValue(Canvas.LeftProperty, 157.0 + (tab_num - 1) * (142));
  1305. listpage[select_page].SetValue(Canvas.RightProperty, double.NaN);
  1306. listpage[select_page].SetValue(Canvas.BottomProperty, double.NaN);
  1307. // menu.Items.Add(menu.Items[i]);
  1308. (cantab.FindName("c" + listpagename[i]) as PageControl).Visibility = Visibility.Visible;
  1309. }
  1310. }
  1311. }
  1312. }
  1313. //把所有选项卡找出来多的第9个开始存入菜单选项卡
  1314. menu.Items.Clear();
  1315. deletelabel.Clear();
  1316. for (int i = 0; i < listpagename.Count; i++)
  1317. {
  1318. if (listpage.Count > tab_num)
  1319. {
  1320. if (i > (tab_num - 2))
  1321. {
  1322. Label label = new Label();
  1323. label.Content = listpage[listpagename[i]].lblhomepage.Content;//pagename//image_name[pagename][3]
  1324. // label.Name = pagename;
  1325. label.Tag = listpagename[i];
  1326. label.Background = new SolidColorBrush(Color.FromRgb(0x43, 0x4e, 0x61));
  1327. label.Foreground = new SolidColorBrush(Color.FromRgb(0xAA, 0xAA, 0xAA));
  1328. label.HorizontalContentAlignment = HorizontalAlignment.Center;
  1329. label.VerticalContentAlignment = VerticalAlignment.Center;
  1330. label.FontSize = 14;
  1331. label.Height = 37;
  1332. label.Width = 140;
  1333. label.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(ClickMneuLabel);
  1334. deletelabel.Add(listpagename[i]);
  1335. Console.WriteLine("listpagename[i]" + listpagename[i]);
  1336. menu.Items.Add(label);
  1337. }
  1338. }
  1339. }
  1340. //前面添加所有多出的菜单后面移除选中的
  1341. //移除选中的标签
  1342. for (int i = 0; i < deletelabel.Count; i++)
  1343. {
  1344. if (selectpage == deletelabel[i])
  1345. {
  1346. deletelabel.RemoveAt(i);
  1347. menu.Items.RemoveAt(i);
  1348. }
  1349. }
  1350. //选中前七个时移除菜单选项卡与选项卡中第八个重复的。
  1351. if (deletelabel.Count > 0 && listpagename.Count > tab_num)
  1352. {
  1353. for (int i = 0; i < listpagename.Count; i++)
  1354. {
  1355. if (i <= (tab_num - 1))
  1356. {
  1357. if (listpagename[i].IndexOf(selectpage) > -1)
  1358. {
  1359. for (int i1 = 0; i1 < deletelabel.Count; i1++)
  1360. {
  1361. if (listpagename[tab_num - 1] == deletelabel[i1])
  1362. {
  1363. deletelabel.RemoveAt(i1);
  1364. menu.Items.RemoveAt(i1);
  1365. }
  1366. }
  1367. }
  1368. }
  1369. }
  1370. }
  1371. //显示被选中标签页的图像
  1372. for (int i = 0; i < showpic.Children.Count; i++)
  1373. {
  1374. showpic.Children[i].Visibility = Visibility.Hidden;
  1375. }
  1376. (showpic.FindName("can" + select_page) as Canvas).Visibility = Visibility.Visible;
  1377. this.subtitle.lblfilecount.Content = page_filenames[selectpage].Count.ToString() + "个文件";
  1378. this.subtitle.lblzoom.Visibility = Visibility.Visible;
  1379. this.subtitle.sldzoom.Visibility = Visibility.Visible;
  1380. this.subtitle.lblpercentge.Visibility = Visibility.Visible;
  1381. this.showpic.Height = (showpic.FindName("can" + selectpage) as Canvas).Height;
  1382. this.subtitle.sldzoom.Value = 1 + zoom[selectpage];
  1383. //判断是否是首页
  1384. homepage_disabled();
  1385. }
  1386. #endregion
  1387. #region 标签页关闭按钮状态切换
  1388. /// <summary>
  1389. /// 标签页关闭按钮状态切换
  1390. /// </summary>
  1391. /// <param name="sender"></param>
  1392. /// <param name="e"></param>
  1393. private void mousemove_itemspage(object sender, MouseEventArgs e)
  1394. {
  1395. Point pp = e.GetPosition(e.Source as FrameworkElement);
  1396. String select_page = ((Label)sender).Tag.ToString();
  1397. //该区域为关闭按钮区域
  1398. if (pp.X >= 127 && pp.Y <= 13)
  1399. {
  1400. this.listpage[select_page].imghomepage.Visibility = Visibility.Hidden;
  1401. this.listpage[select_page].imghomepagered.Visibility = Visibility.Visible;
  1402. this.Cursor = Cursors.Hand;
  1403. }
  1404. else
  1405. {
  1406. this.listpage[select_page].imghomepage.Visibility = Visibility.Visible;
  1407. this.listpage[select_page].imghomepagered.Visibility = Visibility.Hidden;
  1408. this.Cursor = Cursors.Arrow;
  1409. }
  1410. }
  1411. #endregion
  1412. #region 鼠标离开标签页关闭按钮时状态恢复
  1413. /// <summary>
  1414. /// 鼠标离开标签页关闭按钮时状态恢复
  1415. /// </summary>
  1416. /// <param name="sender"></param>
  1417. /// <param name="e"></param>
  1418. private void mouseleave_itemspage(object sender, MouseEventArgs e)
  1419. {
  1420. String select_page = ((Label)sender).Tag.ToString();
  1421. if (listpage.ContainsKey(select_page))
  1422. {
  1423. this.listpage[select_page].imghomepage.Visibility = Visibility.Visible;
  1424. this.listpage[select_page].imghomepagered.Visibility = Visibility.Hidden;
  1425. }
  1426. this.Cursor = Cursors.Arrow;
  1427. }
  1428. #endregion
  1429. #region 标签页事件处理
  1430. /// <summary>
  1431. /// 由于控件重叠,两个控件都有事件无法解决,这里根据坐标处理事件
  1432. /// </summary>
  1433. /// <param name="sender"></param>
  1434. /// <param name="e"></param>
  1435. private void select_page(object sender, MouseButtonEventArgs e)
  1436. {
  1437. if (gc != null)
  1438. {
  1439. gc.WindowState = WindowState.Normal;
  1440. gc.Top = (this.Height - gc.Height) / 2;
  1441. gc.Left = (this.Width - gc.Width) / 2;
  1442. gc.Activate();
  1443. return;
  1444. }
  1445. Point pp = Mouse.GetPosition(e.Source as FrameworkElement);
  1446. String select_page = ((Label)sender).Tag.ToString();
  1447. //该区域为关闭按钮区域
  1448. if (pp.X >= 127 && pp.Y <= 13)
  1449. {
  1450. //清空标签页,更改为删除指定类型的孩子,然后重新排列分布
  1451. cantab.Children.Remove(cantab.FindName("c" + select_page) as PageControl);
  1452. //清除显示图像页内容
  1453. showpic.Children.Remove(showpic.FindName("can" + select_page) as Canvas);
  1454. //清除首页录入框
  1455. this.pagefirst.showinfo.Children.Remove(this.pagefirst.showinfo.FindName("hp" + select_page) as HomePageEntry);
  1456. //清除选中文件字典
  1457. page_filenames.Remove(select_page);
  1458. image_name.Remove(select_page);
  1459. zoom.Remove(select_page);
  1460. pich.Remove(select_page);
  1461. picw.Remove(select_page);
  1462. listpage.Remove(select_page);
  1463. listpagename.Remove(select_page);
  1464. listhompage.Remove(select_page);
  1465. Show_menu();
  1466. this.pagefirst.showinfo.Height = listhompage.Count * 65;
  1467. //恢复没被选中显示
  1468. if (listpage.Count > 0)
  1469. {
  1470. menu.Items.Clear();
  1471. deletelabel.Clear();
  1472. for (int i = 0; i < listpagename.Count; i++)
  1473. {
  1474. if (listpage.Count > tab_num)
  1475. {
  1476. if (i > (tab_num - 1))
  1477. {
  1478. Label label = new Label();
  1479. label.Content = listpage[listpagename[i]].lblhomepage.Content;//pagename//image_name[pagename][3]
  1480. // label.Name = pagename;
  1481. label.Tag = listpagename[i];
  1482. label.Background = new SolidColorBrush(Color.FromRgb(0x43, 0x4e, 0x61));
  1483. label.Foreground = new SolidColorBrush(Color.FromRgb(0xF5, 0x9A, 0x23));
  1484. label.HorizontalContentAlignment = HorizontalAlignment.Center;
  1485. label.VerticalContentAlignment = VerticalAlignment.Center;
  1486. label.FontSize = 14;
  1487. label.Height = 37;
  1488. label.Width = 140;
  1489. label.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(ClickMneuLabel);
  1490. deletelabel.Add(listpagename[i]);
  1491. menu.Items.Add(label);
  1492. }
  1493. }
  1494. }
  1495. for (int i = 0; i < listpage.Count; i++)
  1496. {
  1497. // Console.WriteLine(i + " 有这些" + listpagename[i]);
  1498. //标签页
  1499. (showpic.FindName("can" + listpagename[i]) as Canvas).Visibility = Visibility.Hidden;
  1500. //标签全显示
  1501. (cantab.FindName("c" + listpagename[i]) as PageControl).Visibility = Visibility.Visible;
  1502. //隐藏菜单选项卡下方的标签
  1503. if (i > tab_num-1)
  1504. {
  1505. (cantab.FindName("c" + listpagename[i]) as PageControl).Visibility = Visibility.Hidden;
  1506. }
  1507. if (selectpage == select_page && i == 0)
  1508. {
  1509. listpage[listpagename[i]].lblhomepage.Foreground = new SolidColorBrush(Color.FromRgb(230, 230, 33));
  1510. listpage[listpagename[i]].pagegird.Background = new SolidColorBrush(Color.FromRgb(0x18, 0x25, 0x3C));
  1511. selectpage = listpagename[i];
  1512. }
  1513. listpage[listpagename[i]].SetValue(Canvas.TopProperty, 3.0);
  1514. listpage[listpagename[i]].SetValue(Canvas.LeftProperty, 157.0 + i * (lblhomepage.Width + 2));
  1515. listpage[listpagename[i]].SetValue(Canvas.RightProperty, double.NaN);
  1516. listpage[listpagename[i]].SetValue(Canvas.BottomProperty, double.NaN);
  1517. //录入框
  1518. //listhompage[listpagename[i]].SetValue(Canvas.TopProperty, 65.0 * i);
  1519. //listhompage[listpagename[i]].SetValue(Canvas.LeftProperty, 0.0);
  1520. //listhompage[listpagename[i]].SetValue(Canvas.RightProperty, double.NaN);
  1521. //listhompage[listpagename[i]].SetValue(Canvas.BottomProperty, double.NaN);
  1522. }
  1523. if (selectpage != "首页")
  1524. {
  1525. (showpic.FindName("can" + selectpage) as Canvas).Visibility = Visibility.Visible;
  1526. this.showpic.Height = (showpic.FindName("can" + selectpage) as Canvas).Height;
  1527. //标签页
  1528. screen_label(listpage[selectpage].Content.ToString());
  1529. }
  1530. else
  1531. {
  1532. //标签页
  1533. screen_label(this.pagefirst.testitems);
  1534. }
  1535. }
  1536. else
  1537. {
  1538. //首页被选中显示
  1539. lblhomepage.Foreground = new SolidColorBrush(Color.FromRgb(0xF5, 0x9A, 0x23));
  1540. lblhomepage.Background = new SolidColorBrush(Color.FromRgb(0x18, 0x25, 0x3C));
  1541. //显示首页显示图像加载页
  1542. pagefirst.Visibility = Visibility.Visible;
  1543. svshowimg.Visibility = Visibility.Hidden;
  1544. //选中标签页
  1545. selectpage = "首页";
  1546. this.subtitle.lblfilecount.Content = "欢迎使用AIRS系统!选择检测项目";
  1547. this.subtitle.lblzoom.Visibility = Visibility.Hidden;
  1548. this.subtitle.sldzoom.Visibility = Visibility.Hidden;
  1549. this.subtitle.lblpercentge.Visibility = Visibility.Hidden;
  1550. }
  1551. }
  1552. //其他区域为选中标签页区域
  1553. else
  1554. {
  1555. //只有当标签页切换了才执行操作
  1556. if (selectpage != select_page)
  1557. {
  1558. selectpage = select_page;
  1559. //恢复没被选中显示
  1560. foreach (KeyValuePair<string, PageControl> keyvalue in listpage)
  1561. {
  1562. keyvalue.Value.lblhomepage.Foreground = new SolidColorBrush(Color.FromRgb(0xAA, 0xAA, 0xAA));
  1563. keyvalue.Value.pagegird.Background = new SolidColorBrush(Color.FromRgb(0x43, 0x4e, 0x61));
  1564. }
  1565. //首页没被选中显示
  1566. lblhomepage.Foreground = new SolidColorBrush(Color.FromRgb(0xAA, 0xAA, 0xAA));
  1567. lblhomepage.Background = new SolidColorBrush(Color.FromRgb(0x43, 0x4e, 0x61));
  1568. //隐藏首页显示图像加载页
  1569. pagefirst.Visibility = Visibility.Hidden;
  1570. svshowimg.Visibility = Visibility.Visible;
  1571. //显示选中标签页
  1572. listpage[select_page].lblhomepage.Foreground = new SolidColorBrush(Color.FromRgb(0xF5, 0x9A, 0x23));
  1573. listpage[select_page].pagegird.Background = new SolidColorBrush(Color.FromRgb(0x18, 0x25, 0x3C));
  1574. //显示被选中标签页的图像
  1575. for (int i = 0; i < showpic.Children.Count; i++)
  1576. {
  1577. showpic.Children[i].Visibility = Visibility.Hidden;
  1578. }
  1579. (showpic.FindName("can" + select_page) as Canvas).Visibility = Visibility.Visible;
  1580. this.subtitle.lblfilecount.Content = page_filenames[selectpage].Count.ToString() + "个文件";
  1581. this.subtitle.lblzoom.Visibility = Visibility.Visible;
  1582. this.subtitle.sldzoom.Visibility = Visibility.Visible;
  1583. this.subtitle.lblpercentge.Visibility = Visibility.Visible;
  1584. this.showpic.Height = (showpic.FindName("can" + selectpage) as Canvas).Height;
  1585. this.subtitle.sldzoom.Value = 1 + zoom[selectpage];
  1586. this.svshowimg.ScrollToVerticalOffset(Convert.ToDouble(image_name[selectpage][10]));
  1587. }
  1588. }
  1589. //判断是否是首页
  1590. homepage_disabled();
  1591. }
  1592. #endregion
  1593. #region 清除选中项
  1594. /// <summary>
  1595. /// 清除选中项
  1596. /// </summary>
  1597. /// <param name="sender"></param>
  1598. /// <param name="e"></param>
  1599. private void clearbox(object sender, MouseButtonEventArgs e)
  1600. {
  1601. int index = Convert.ToInt32(((Image)sender).Tag.ToString());
  1602. if (e.ClickCount == 1)
  1603. {
  1604. for (int m = 0; m < dic_pic[selectpage].Count; m++)
  1605. {
  1606. dic_pic[selectpage][m].box.Visibility = Visibility.Hidden;
  1607. dic_pic[selectpage][m].st = false;
  1608. }
  1609. dic_pic[selectpage][index].box.Visibility = Visibility.Visible;
  1610. dic_pic[selectpage][index].st = true;
  1611. }
  1612. else if (e.ClickCount == 2)
  1613. {
  1614. open_full_screen_window(index, 0);
  1615. }
  1616. }
  1617. #endregion
  1618. #region 分析过程按钮
  1619. /// <summary>
  1620. /// 分析过程
  1621. /// </summary>
  1622. /// <param name="sender"></param>
  1623. /// <param name="e"></param>
  1624. private void btnanalysis_Click(object sender, RoutedEventArgs e)
  1625. {
  1626. int index = Convert.ToInt32(((Button)sender).Tag.ToString());
  1627. open_full_screen_window(index, 1);
  1628. }
  1629. #endregion
  1630. #region 系统启动
  1631. /// <summary>
  1632. /// 系统启动
  1633. /// </summary>
  1634. /// <param name="sender"></param>
  1635. /// <param name="e"></param>
  1636. private void Window_Loaded(object sender, RoutedEventArgs e)
  1637. {
  1638. homepage_disabled();
  1639. }
  1640. #endregion
  1641. #region 滚轮事件
  1642. /// <summary>
  1643. /// 滚轮滚动
  1644. /// </summary>
  1645. /// <param name="sender"></param>
  1646. /// <param name="e"></param>
  1647. private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
  1648. {
  1649. //if (filenames.Count > 0)
  1650. if (selectpage != "首页" && page_filenames[selectpage].Count > 0)
  1651. {
  1652. //当禁用滚轮时,肯定是按下Ctrl键,这时执行放大或缩小操作
  1653. if (mousedown)
  1654. {
  1655. if (e.Delta > 0)
  1656. {
  1657. zoom[selectpage] = zoom[selectpage] + 0.05;
  1658. // zoom[selectpage] = zoom[selectpage] + 2;
  1659. }
  1660. else if (e.Delta < 0)
  1661. {
  1662. zoom[selectpage] = zoom[selectpage] - 0.05;
  1663. //zoom[selectpage] = zoom[selectpage] - 2;
  1664. }
  1665. //zoom = zoom + e.Delta / 2400.0;
  1666. if (zoom[selectpage] < -0.9)
  1667. {
  1668. zoom[selectpage] = -0.9;
  1669. }
  1670. //else if((picw * (1+zoom)) >(this.showpic.Width-20))
  1671. else if (zoom[selectpage] > 2)
  1672. {
  1673. zoom[selectpage] = 2;
  1674. }
  1675. this.subtitle.sldzoom.Value = 1 + zoom[selectpage];
  1676. piczoom();
  1677. }
  1678. else
  1679. {
  1680. if (e.Delta > 0)
  1681. {
  1682. // 向上滚动
  1683. svshowimg.LineUp();
  1684. // svshowimg.PageUp();
  1685. }
  1686. if (e.Delta < 0)
  1687. {
  1688. // 向下滚动
  1689. svshowimg.LineDown();
  1690. // svshowimg.PageDown();
  1691. }
  1692. }
  1693. }
  1694. }
  1695. #endregion
  1696. #region 图像缩放
  1697. /// <summary>
  1698. /// 图像缩放
  1699. /// </summary>
  1700. private void piczoom()
  1701. {
  1702. int canvas_height = 0;
  1703. //判断一行能存放几个pic
  1704. int displaynum = Convert.ToInt32(Math.Floor(this.showpic.Width / (picw[selectpage] * (1 + zoom[selectpage]) + 20)));
  1705. if (displaynum == 0)
  1706. {
  1707. displaynum = 1;
  1708. }
  1709. for (int i = 0; i < dic_pic[selectpage].Count; i++)
  1710. {
  1711. dic_pic[selectpage][i].Width = picw[selectpage] * (1 + zoom[selectpage]);
  1712. dic_pic[selectpage][i].Height = pich[selectpage] * (1 + zoom[selectpage]);
  1713. dic_pic[selectpage][i].SetValue(Canvas.TopProperty, 5.0 + (i / displaynum) * (dic_pic[selectpage][i].Height + 10.0));
  1714. dic_pic[selectpage][i].SetValue(Canvas.LeftProperty, 20.0 + (i % displaynum) * (dic_pic[selectpage][i].Width + 20.0));
  1715. dic_pic[selectpage][i].SetValue(Canvas.RightProperty, double.NaN);
  1716. dic_pic[selectpage][i].SetValue(Canvas.BottomProperty, double.NaN);
  1717. canvas_height = Convert.ToInt32(10 + (i / displaynum) * (dic_pic[selectpage][i].Height + 10) + dic_pic[selectpage][i].Height);
  1718. }
  1719. (showpic.FindName("can" + selectpage) as Canvas).Height = canvas_height;
  1720. this.showpic.Height = canvas_height;
  1721. }
  1722. #endregion
  1723. #region 按下Ctrl键后不允许滚轮操作
  1724. /// <summary>
  1725. /// 按下Ctrl键后不允许滚轮操作
  1726. /// </summary>
  1727. /// <param name="sender"></param>
  1728. /// <param name="e"></param>
  1729. private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
  1730. {
  1731. if (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl)
  1732. {
  1733. mousedown = true;
  1734. svshowimg.VerticalScrollBarVisibility = ScrollBarVisibility.Disabled;
  1735. }
  1736. }
  1737. #endregion
  1738. #region 抬起Ctrl键后允许滚轮操作
  1739. /// <summary>
  1740. /// 抬起Ctrl键后允许滚轮操作
  1741. /// </summary>
  1742. /// <param name="sender"></param>
  1743. /// <param name="e"></param>
  1744. private void Window_PreviewKeyUp(object sender, KeyEventArgs e)
  1745. {
  1746. if (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl)
  1747. {
  1748. mousedown = false;
  1749. svshowimg.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
  1750. }
  1751. }
  1752. #endregion
  1753. #region 拖动文件,这里暂时不做
  1754. /// <summary>
  1755. /// 拖动文件
  1756. /// </summary>
  1757. /// <param name="sender"></param>
  1758. /// <param name="e"></param>
  1759. private void Window_Drop(object sender, DragEventArgs e)
  1760. {
  1761. //try
  1762. //{
  1763. // string dropfile = "";
  1764. // fns.Clear();
  1765. // if (e.Data.GetDataPresent(System.Windows.DataFormats.FileDrop))
  1766. // {
  1767. // int count = ((System.Array)e.Data.GetData(System.Windows.DataFormats.FileDrop)).Length;
  1768. // for (int i = 0; i < count; i++)
  1769. // {
  1770. // dropfile = ((System.Array)e.Data.GetData(System.Windows.DataFormats.FileDrop)).GetValue(i).ToString();
  1771. // if (System.IO.Path.GetExtension(dropfile) == ".jpg" || System.IO.Path.GetExtension(dropfile) == ".bmp")
  1772. // {
  1773. // //如果文件已经包含此文件则路过
  1774. // if(filenames.IndexOf(dropfile)>-1)
  1775. // {
  1776. // continue;
  1777. // }
  1778. // fns.Add(dropfile);
  1779. // }
  1780. // }
  1781. // //如果添加图片数量大于0则启动线程
  1782. // if (fns.Count > 0)
  1783. // {
  1784. // Thread th = new Thread(display_img);
  1785. // th.Start();
  1786. // }
  1787. // }
  1788. //}
  1789. //catch (Exception ex)
  1790. //{
  1791. // MessageBox.Show("A handled exception just occurred: " + ex.Message, "Exception Sample", MessageBoxButton.OK, MessageBoxImage.Warning);
  1792. //}
  1793. }
  1794. #endregion
  1795. #region 线程加载图片
  1796. /// <summary>
  1797. /// 线程-->显示图像
  1798. /// </summary>
  1799. private void display_img()
  1800. {
  1801. for (int i = 0; i < fns.Count; i++)
  1802. {
  1803. //先将文件名取出放入filenames中
  1804. page_filenames[selectpage].Add(fns[i]);
  1805. //首先读取文件夹下是否存在AI文件夹
  1806. string _filename = System.IO.Path.GetFileName(fns[i]);
  1807. string aifilename = image_name[selectpage][6] + "\\AI\\" + _filename.Substring(0, _filename.Length - 4) + ".ai";
  1808. //暂存信息
  1809. string buff_json = "";
  1810. string buff_title = "";
  1811. string buff_zoom_key = "";
  1812. string gradevalue = "";
  1813. //如果AI文件存在,则读取参数信息
  1814. if (System.IO.File.Exists(aifilename))
  1815. {
  1816. using (System.IO.StreamReader _file = System.IO.File.OpenText(aifilename))
  1817. {
  1818. using (JsonTextReader reader = new JsonTextReader(_file))
  1819. {
  1820. JObject o = (JObject)JToken.ReadFrom(reader);
  1821. JObject content = JObject.Parse(o["content"].ToString());
  1822. JObject additional = JObject.Parse(content["additional"].ToString());
  1823. JObject details = JObject.Parse(content["details"].ToString());
  1824. if (details.Property("value") != null )
  1825. {
  1826. gradevalue = details["value"].ToString();
  1827. }
  1828. buff_json = o.ToString();
  1829. buff_title = content["title"].ToString();
  1830. buff_zoom_key = additional["zoom_key"].ToString() + "X";
  1831. reader.Close();
  1832. _file.Close();
  1833. _file.Dispose();
  1834. }
  1835. }
  1836. }
  1837. //取出对应图片显示
  1838. this.Dispatcher.Invoke(new Action(() =>
  1839. {
  1840. //如果图片字典中没有选中标签的信息,退出
  1841. if (!dic_pic.ContainsKey(selectpage))
  1842. {
  1843. return;
  1844. }
  1845. //加载图片数据
  1846. Picturebox pic = new Picturebox();
  1847. pic.img.Tag = i.ToString();
  1848. pic.btnanalysis.Tag = i.ToString();
  1849. pic.grade_value = gradevalue;
  1850. pic.img.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(clearbox);
  1851. pic.img.PreviewMouseRightButtonDown += new System.Windows.Input.MouseButtonEventHandler(clearbox);
  1852. //右键菜单
  1853. ContextMenu cm = new ContextMenu();
  1854. MenuItem Edit = new MenuItem();//菜单项
  1855. Edit.Header = "全屏查看(F)";
  1856. Edit.Tag = i.ToString();
  1857. Edit.Click += new RoutedEventHandler(full_screen);
  1858. cm.Items.Add(Edit);
  1859. Edit = new MenuItem();//菜单项
  1860. Edit.Header = "定位原图(L)";
  1861. Edit.Tag = i.ToString();
  1862. Edit.Click += new RoutedEventHandler(location_img);
  1863. cm.Items.Add(Edit);
  1864. pic.img.ContextMenu = cm;
  1865. pic.field.ContextMenu = cm;
  1866. pic.fieldr.ContextMenu = cm;
  1867. pic.btnanalysis.Click += new RoutedEventHandler(btnanalysis_Click);
  1868. pic.img.ToolTip = fns[i];
  1869. pic.Tag = buff_json;
  1870. //zm:修改界面显示为文件全名
  1871. //pic.lblpicmsg.Content = ((dic_pic[selectpage].Count + 1).ToString() + image_name[selectpage][4] + " " + buff_title + " " + buff_zoom_key).Trim();
  1872. pic.lblpicmsg.Content = (fns_name[i].ToString() + image_name[selectpage][4] + " " + buff_title + " " + buff_zoom_key).Trim();
  1873. //载入图像
  1874. Uri uri = new Uri(fns[i]);
  1875. BitmapImage bi = new BitmapImage();
  1876. bi.BeginInit();
  1877. bi.CacheOption = BitmapCacheOption.OnLoad;
  1878. bi.UriSource = uri;
  1879. bi.EndInit();
  1880. pic.img.Source = bi;
  1881. //计算缩放比
  1882. int iw = bi.PixelWidth;
  1883. int ih = bi.PixelHeight;
  1884. pic._PixelWidth = iw;
  1885. pic._PixelHeight = ih;
  1886. double vw = pic.img.Width;
  1887. double vh = pic.img.Height;
  1888. double propw = iw / vw;
  1889. double proph = ih / vh;
  1890. if(propw>proph)
  1891. {
  1892. pic.zoom_key = propw;
  1893. pic.rect_top = (vh - ih / propw) / 2;
  1894. pic.rect_left = 0;
  1895. }
  1896. else
  1897. {
  1898. pic.zoom_key = proph;
  1899. pic.rect_top = 0;
  1900. pic.rect_left = (vw - iw / proph) / 2;
  1901. }
  1902. //检测是否有视场文件
  1903. String field = image_name[selectpage][6] + "\\AI\\";
  1904. field = field + System.IO.Path.GetFileNameWithoutExtension(fns[i]) + ".fld";
  1905. if (File.Exists(field))
  1906. {
  1907. StreamReader file = new StreamReader(field);
  1908. using (JsonTextReader reader = new JsonTextReader(file))
  1909. {
  1910. JObject o = (JObject)JToken.ReadFrom(reader);
  1911. JObject param = JObject.Parse(o["viewport"].ToString());
  1912. string c_r = param["type"].ToString();
  1913. if (c_r.ToString()=="C")
  1914. {
  1915. double r = Convert.ToDouble(param["w"].ToString()) / 2;
  1916. double x = Convert.ToDouble(param["x"].ToString()) + r;
  1917. double y = Convert.ToDouble(param["y"].ToString()) + r;
  1918. pic.circle.RadiusX = r / pic.zoom_key;
  1919. pic.circle.RadiusY = r / pic.zoom_key;
  1920. pic.circle.Center = new Point(x / pic.zoom_key + pic.rect_left, y / pic.zoom_key + pic.rect_top);
  1921. pic.field.Fill = new SolidColorBrush(Color.FromArgb(0x80, 0xFF, 0xFF, 0xFF));
  1922. pic.fieldr.Fill = new SolidColorBrush(Color.FromArgb(0x80, 0xFF, 0xFF, 0xFF));
  1923. pic.field.Visibility = Visibility.Visible;
  1924. pic.fieldr.Visibility = Visibility.Hidden;
  1925. }
  1926. else
  1927. {
  1928. double _left = Convert.ToDouble(param["x"].ToString());
  1929. double _top = Convert.ToDouble(param["y"].ToString());
  1930. double _width = Convert.ToDouble(param["w"].ToString());
  1931. double _height = Convert.ToDouble(param["h"].ToString());
  1932. pic.rectrr.Rect = new Rect(_left / pic.zoom_key + pic.rect_left, _top / pic.zoom_key + pic.rect_top, _width / pic.zoom_key, _height / pic.zoom_key);
  1933. pic.field.Fill = new SolidColorBrush(Color.FromArgb(0x80, 0xFF, 0xFF, 0xFF));
  1934. pic.fieldr.Fill = new SolidColorBrush(Color.FromArgb(0x80, 0xFF, 0xFF, 0xFF));
  1935. pic.field.Visibility = Visibility.Hidden;
  1936. pic.fieldr.Visibility = Visibility.Visible;
  1937. }
  1938. reader.Close();
  1939. file.Close();
  1940. file.Dispose();
  1941. }
  1942. pic.Frozen = true;
  1943. }
  1944. //取第一张图的长和宽做为基础缩放
  1945. if (dic_pic[selectpage].Count == 0)
  1946. {
  1947. pich.Add(selectpage, pic.Height);
  1948. picw.Add(selectpage, pic.Width);
  1949. }
  1950. else
  1951. {
  1952. pic.Height = pich[selectpage] * (1 + zoom[selectpage]);
  1953. pic.Width = picw[selectpage] * (1 + zoom[selectpage]);
  1954. }
  1955. //查看是否有ai文件参数,没有则将按钮隐藏
  1956. if (buff_title == "")
  1957. {
  1958. pic.btnanalysis.Visibility = Visibility.Hidden;
  1959. }
  1960. else
  1961. {
  1962. pic.btnanalysis.Visibility = Visibility.Visible;
  1963. }
  1964. //取一行能放多少张图片
  1965. int displaynum = Convert.ToInt32(Math.Floor(this.showpic.Width / (picw[selectpage] * (1 + zoom[selectpage]) + 20)));
  1966. pic.SetValue(Canvas.TopProperty, 5.0 + (dic_pic[selectpage].Count / displaynum) * (pich[selectpage] * (1 + zoom[selectpage]) + 10.0));
  1967. pic.SetValue(Canvas.LeftProperty, 20.0 + (dic_pic[selectpage].Count % displaynum) * (picw[selectpage] * (1 + zoom[selectpage]) + 20.0));
  1968. pic.SetValue(Canvas.RightProperty, double.NaN);
  1969. pic.SetValue(Canvas.BottomProperty, double.NaN);
  1970. canvas_height = Convert.ToInt32(10 + (dic_pic[selectpage].Count / displaynum) * (pich[selectpage] * (1 + zoom[selectpage]) + 10) + pich[selectpage] * (1 + zoom[selectpage]));
  1971. dic_pic[selectpage].Add(pic);
  1972. (showpic.FindName("can" + selectpage) as Canvas).Children.Add(pic);
  1973. this.subtitle.lblfilecount.Content = (i+1) +"/"+ fns.Count.ToString() + "个文件";//有一个文件图片更新一个
  1974. }));
  1975. }
  1976. //加载完图片后操作
  1977. this.showpic.Dispatcher.Invoke(new Action(() => {
  1978. (showpic.FindName("can" + selectpage) as Canvas).Height = canvas_height;
  1979. this.showpic.Height = canvas_height;
  1980. this.subtitle.lblzoom.Visibility = Visibility.Visible;
  1981. this.subtitle.sldzoom.Visibility = Visibility.Visible;
  1982. this.subtitle.lblpercentge.Visibility = Visibility.Visible;
  1983. this.subtitle.sldzoom.Value = 1 + zoom[selectpage];
  1984. this.subtitle.lblfilecount.Visibility = Visibility.Visible;
  1985. //更新文件数
  1986. this.subtitle.lblfilecount.Content = page_filenames[selectpage].Count.ToString() + "个文件";
  1987. //让滚动条滚动到顶部
  1988. //this.svshowimg.ScrollToVerticalOffset(0);
  1989. this.svshowimg.ScrollToVerticalOffset(Convert.ToDouble(image_name[selectpage][10]));
  1990. cantab.IsEnabled = true;
  1991. //关闭按钮可用
  1992. pagetitle.isclosed = true;
  1993. //启用所有标签页
  1994. Header_Opacity_ChangeBright();
  1995. }));
  1996. }
  1997. #endregion
  1998. #region 滚轮变化
  1999. /// <summary>
  2000. /// 滚轮滚动
  2001. /// </summary>
  2002. /// <param name="sender"></param>
  2003. /// <param name="e"></param>
  2004. private void ScrollViewer_Changed(object sender, ScrollChangedEventArgs e)
  2005. {
  2006. if (svshowimg.CanContentScroll == true)
  2007. {
  2008. if (selectpage != "首页"&&listpage.Count>0)
  2009. {
  2010. image_name[selectpage][10] = e.VerticalOffset.ToString();
  2011. }
  2012. }
  2013. }
  2014. #endregion
  2015. #region 图像右键全屏
  2016. /// <summary>
  2017. /// 图像右键全屏
  2018. /// </summary>
  2019. /// <param name="sender"></param>
  2020. /// <param name="e"></param>
  2021. private void full_screen(object sender, RoutedEventArgs e)
  2022. {
  2023. int index = Convert.ToInt32(((MenuItem)sender).Tag);
  2024. open_full_screen_window(index, 0);
  2025. }
  2026. #endregion
  2027. #region 调用全屏并传参
  2028. /// <summary>
  2029. /// 调用全屏并传参
  2030. /// </summary>
  2031. /// <param name="index"></param>
  2032. /// <param name="analysis"></param>
  2033. private void open_full_screen_window(int index, int analysis)
  2034. {
  2035. Full_Screen_View ff = new Full_Screen_View();
  2036. ff.Owner = this;
  2037. ff.ShowInTaskbar = false;
  2038. ff.selectindex = index;
  2039. for (int i = 0; i < dic_pic[selectpage].Count; i++)
  2040. {
  2041. ff.ImgAnalysisList.Add(dic_pic[selectpage][i].lblpicmsg.Content.ToString());
  2042. }
  2043. ff.imglist.Add("imgList", page_filenames[selectpage]);
  2044. ff.feild_change = new Boolean[page_filenames[selectpage].Count];
  2045. ff.ProcessOrInitial = analysis;
  2046. ff.ProcessFileName = "AI";
  2047. ff.ShowDialog();
  2048. full_return_index = ff.cureent;
  2049. for (int m = 0; m < dic_pic[selectpage].Count; m++)
  2050. {
  2051. dic_pic[selectpage][m].box.Visibility = Visibility.Hidden;
  2052. dic_pic[selectpage][m].st = false;
  2053. //如果视场更改则重新加载
  2054. //if(ff.feild_change[m])
  2055. //{
  2056. // ////计算缩放比
  2057. // //double iw = dic_pic[selectpage][m]._PixelWidth;
  2058. // //double ih = dic_pic[selectpage][m]._PixelHeight;
  2059. // //double vw = dic_pic[selectpage][m].img.Width;
  2060. // //double vh = dic_pic[selectpage][m].img.Height;
  2061. // //double propw = iw / vw;
  2062. // //double proph = ih / vh;
  2063. // //if (propw > proph)
  2064. // //{
  2065. // // dic_pic[selectpage][m].zoom_key = propw;
  2066. // // dic_pic[selectpage][m].rect_top = (vh - ih / propw) / 2;
  2067. // // dic_pic[selectpage][m].rect_left = 0;
  2068. // //}
  2069. // //else
  2070. // //{
  2071. // // pic.zoom_key = proph;
  2072. // // pic.rect_top = 0;
  2073. // // pic.rect_left = (vw - iw / proph) / 2;
  2074. // //}
  2075. // String field = image_name[selectpage][6] + "\\AI\\";
  2076. // field = field + System.IO.Path.GetFileNameWithoutExtension(page_filenames[selectpage][m]) + ".fld";
  2077. // StreamReader file = new StreamReader(field);
  2078. // using (JsonTextReader reader = new JsonTextReader(file))
  2079. // {
  2080. // JObject o = (JObject)JToken.ReadFrom(reader);
  2081. // JToken c_r = o["Circle_Rect"];
  2082. // if (c_r.ToString() == "Circle")
  2083. // {
  2084. // JObject circle = JObject.Parse(o["Circle"].ToString());
  2085. // double r = Convert.ToDouble(circle["Radius"].ToString());
  2086. // double x = Convert.ToDouble(circle["Center_X"].ToString());
  2087. // double y = Convert.ToDouble(circle["Center_Y"].ToString());
  2088. // dic_pic[selectpage][m].circle.RadiusX = r / dic_pic[selectpage][m].zoom_key;
  2089. // dic_pic[selectpage][m].circle.RadiusY = r / dic_pic[selectpage][m].zoom_key;
  2090. // dic_pic[selectpage][m].circle.Center = new Point(x / dic_pic[selectpage][m].zoom_key + dic_pic[selectpage][m].rect_left, y / dic_pic[selectpage][m].zoom_key + dic_pic[selectpage][m].rect_top);
  2091. // dic_pic[selectpage][m].field.Visibility = Visibility.Visible;
  2092. // dic_pic[selectpage][m].fieldr.Visibility = Visibility.Hidden;
  2093. // }
  2094. // else
  2095. // {
  2096. // JObject recta = JObject.Parse(o["Rectangle"].ToString());
  2097. // double _left = Convert.ToDouble(recta["Left"].ToString());
  2098. // double _top = Convert.ToDouble(recta["Top"].ToString());
  2099. // double _width = Convert.ToDouble(recta["Width"].ToString());
  2100. // double _height = Convert.ToDouble(recta["Height"].ToString());
  2101. // dic_pic[selectpage][m].rectrr.Rect = new Rect(_left / dic_pic[selectpage][m].zoom_key + dic_pic[selectpage][m].rect_left, _top / dic_pic[selectpage][m].zoom_key + dic_pic[selectpage][m].rect_top, _width / dic_pic[selectpage][m].zoom_key, _height / dic_pic[selectpage][m].zoom_key);
  2102. // dic_pic[selectpage][m].field.Visibility = Visibility.Hidden;
  2103. // dic_pic[selectpage][m].fieldr.Visibility = Visibility.Visible;
  2104. // }
  2105. // reader.Close();
  2106. // file.Close();
  2107. // file.Dispose();
  2108. // }
  2109. //}
  2110. }
  2111. dic_pic[selectpage][full_return_index].box.Visibility = Visibility.Visible;
  2112. dic_pic[selectpage][full_return_index].st = true;
  2113. // 获取要定位之前 ScrollViewer 目前的滚动位置
  2114. var currentScrollPosition = svshowimg.VerticalOffset;
  2115. var point = new Point(0, currentScrollPosition);
  2116. // 计算出目标位置并滚动
  2117. var targetPosition = dic_pic[selectpage][full_return_index].TransformToVisual(svshowimg).Transform(point);
  2118. svshowimg.ScrollToVerticalOffset(targetPosition.Y);
  2119. }
  2120. #endregion
  2121. #region 图像定位
  2122. /// <summary>
  2123. /// 图像定位:打开文件夹并选择指定文件
  2124. /// </summary>
  2125. /// <param name="sender"></param>
  2126. /// <param name="e"></param>
  2127. private void location_img(object sender, RoutedEventArgs e)
  2128. {
  2129. int index = Convert.ToInt32(((MenuItem)sender).Tag);
  2130. Common.locateFile(page_filenames[selectpage][index]);
  2131. }
  2132. #endregion
  2133. #region 定位原图
  2134. /// <summary>
  2135. /// 定位原图
  2136. /// </summary>
  2137. /// <param name="fileFullName"></param>
  2138. public void OpenFolderAndSelectFile(String fileFullName)
  2139. {
  2140. System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("Explorer.exe");
  2141. psi.Arguments = "/e,/select," + fileFullName;
  2142. System.Diagnostics.Process.Start(psi);
  2143. }
  2144. #endregion
  2145. #region 输出日志
  2146. /// <summary>
  2147. /// 输出日志
  2148. /// </summary>
  2149. /// <param name="strLog"></param>
  2150. public static void WriteLog(string strLog)
  2151. {
  2152. string sFilePath = Directory.GetCurrentDirectory() + DateTime.Now.ToString("yyyyMM");
  2153. string sFileName = "rizhi" + DateTime.Now.ToString("dd") + ".log";
  2154. sFileName = sFilePath + "\\" + sFileName; //文件的绝对路径
  2155. if (!Directory.Exists(sFilePath))//验证路径是否存在
  2156. {
  2157. Directory.CreateDirectory(sFilePath);
  2158. //不存在则创建
  2159. }
  2160. FileStream fs;
  2161. StreamWriter sw;
  2162. if (File.Exists(sFileName))
  2163. //验证文件是否存在,有则追加,无则创建
  2164. {
  2165. fs = new FileStream(sFileName, FileMode.Append, FileAccess.Write);
  2166. }
  2167. else
  2168. {
  2169. fs = new FileStream(sFileName, FileMode.Create, FileAccess.Write);
  2170. }
  2171. sw = new StreamWriter(fs);
  2172. sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + " --- " + strLog);
  2173. sw.Close();
  2174. fs.Close();
  2175. }
  2176. #endregion
  2177. #region 关闭完成弹出窗体
  2178. /// <summary>
  2179. /// 关闭完成弹出窗体(UserControl)
  2180. /// </summary>
  2181. /// <param name="sender"></param>
  2182. /// <param name="e"></param>
  2183. private void completetest_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  2184. {
  2185. this.CompleteTestWindow.Visibility = Visibility.Hidden;
  2186. }
  2187. #endregion
  2188. #region 选中首页
  2189. /// <summary>
  2190. /// 选中首页
  2191. /// </summary>
  2192. /// <param name="sender"></param>
  2193. /// <param name="e"></param>
  2194. private void lblhomepage_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  2195. {
  2196. if(gc!=null)
  2197. {
  2198. gc.WindowState = WindowState.Normal;
  2199. gc.Top = (this.Height - gc.Height) / 2;
  2200. gc.Left = (this.Width - gc.Width) / 2;
  2201. gc.Activate();
  2202. return;
  2203. }
  2204. if (selectpage == "首页")
  2205. {
  2206. return;
  2207. }
  2208. //更新首页显示信息
  2209. this.pagefirst.update_pagefirst_show(image_name[selectpage][0], image_name[selectpage][1], image_name[selectpage][2]);
  2210. screen_label(image_name[selectpage][2]);
  2211. //将其他页显示恢复
  2212. foreach (KeyValuePair<string, PageControl> keyvalue in listpage)
  2213. {
  2214. keyvalue.Value.lblhomepage.Foreground = new SolidColorBrush(Color.FromRgb(0xAA, 0xAA, 0xAA));
  2215. keyvalue.Value.pagegird.Background = new SolidColorBrush(Color.FromRgb(0x43, 0x4e, 0x61));
  2216. }
  2217. //首页被选中显示
  2218. lblhomepage.Foreground = new SolidColorBrush(Color.FromRgb(0xF5, 0x9A, 0x23));
  2219. lblhomepage.Background = new SolidColorBrush(Color.FromRgb(0x18, 0x25, 0x3C));
  2220. //隐藏首页显示图像加载页
  2221. pagefirst.Visibility = Visibility.Visible;
  2222. svshowimg.Visibility = Visibility.Hidden;
  2223. this.subtitle.lblfilecount.Content = "欢迎使用AIRS系统!选择检测项目";
  2224. this.subtitle.lblzoom.Visibility = Visibility.Hidden;
  2225. this.subtitle.sldzoom.Visibility = Visibility.Hidden;
  2226. this.subtitle.lblpercentge.Visibility = Visibility.Hidden;
  2227. selectpage = "首页";
  2228. homepage_disabled();
  2229. }
  2230. #endregion
  2231. #region 切换账号
  2232. /// <summary>
  2233. /// 切换
  2234. /// </summary>
  2235. /// <param name="sender"></param>
  2236. /// <param name="e"></param>
  2237. private void lblchange_cut(object sender, MouseButtonEventArgs e)
  2238. {
  2239. this.root.Children.Add(layer);
  2240. LoginWindow lw = new LoginWindow();
  2241. lw.BtnLogin.Content = "切换";
  2242. lw.Owner = this;
  2243. lw.ShowInTaskbar = false;
  2244. lw.ShowDialog();
  2245. //DialogHelper.ShowDialog(lw);
  2246. if (lw.DialogResult == false)
  2247. {
  2248. //Application.Current.Shutdown();
  2249. lw.Close();
  2250. func();
  2251. return;
  2252. }
  2253. lname = lw.loginname;
  2254. password = lw.password;
  2255. //this.pagetitle.lbltestp.Content = lname.Length == 0 ? "匿名" : lname;
  2256. //this.pagetitle.lblcompound.Content = lw.entryclerk.Length == 0 ? "匿名" : lw.entryclerk;
  2257. //entryclerk = lw.entryclerk;
  2258. func();
  2259. SetAuth();
  2260. }
  2261. #endregion
  2262. #region 生成报告单击事件
  2263. /// <summary>
  2264. /// 生成报告单击事件
  2265. /// </summary>
  2266. /// <param name="sender"></param>
  2267. /// <param name="e"></param>
  2268. private void out_report(object sender, MouseButtonEventArgs e)
  2269. {
  2270. this.root.Children.Add(layer);//蒙版
  2271. HistoryGrade hitory = new HistoryGrade(1);
  2272. hitory.Owner = this;
  2273. hitory.pbw.Checked_Project.Content = image_name[selectpage][3];//检测项目
  2274. hitory.pbw.basis.Content = "";//主要依据,主要标准,技术文件
  2275. hitory.pbw.equipment.Content = "";//设备
  2276. hitory.ShowDialog();
  2277. //image_name.Add(pagename, new List<string>());
  2278. //image_name[pagename].Add(sample.grade_steel); //0:钢种
  2279. //image_name[pagename].Add(sample.grade_standard); //1:标准
  2280. //image_name[pagename].Add(sample.test_item); //2:检测项目
  2281. //image_name[pagename].Add(sample.comb_Number_prefix); //3:样品名称
  2282. //image_name[pagename].Add(sample.comb_Number_suffix); //4:后缀
  2283. //image_name[pagename].Add(sample.comb_Inspection_instrument); //5:检测仪器
  2284. //image_name[pagename].Add(sample.txt_Picture_catalog); //6:文件夹
  2285. //image_name[pagename].Add(this.pagefirst.catagory); //7:钢种catagory参数
  2286. //image_name[pagename].Add(this.pagefirst.items); //8:检测项目参数
  2287. //image_name[pagename].Add(this.pagefirst.testitems_param); //9: param 数据库{'YBG-W': {'w_cls':'wa'}}
  2288. //image_name[pagename].Add(ScrollPositionNum); //10:记录每个页面滚动条位置初始为0
  2289. hitory.Close();//关闭窗体
  2290. func();//关闭蒙版
  2291. }
  2292. #endregion
  2293. #region 历史评级单击事件
  2294. /// <summary>
  2295. /// 历史评级单击事件
  2296. /// </summary>
  2297. private void history_down(object sender, MouseButtonEventArgs e)
  2298. {
  2299. this.root.Children.Add(layer);//蒙版
  2300. HistoryGrade hitory = new HistoryGrade(0);
  2301. hitory.Owner = this;
  2302. hitory.ShowDialog();
  2303. hitory.Close();//关闭窗体
  2304. func();//关闭蒙版
  2305. }
  2306. #endregion
  2307. #region 修改密码
  2308. /// <summary>
  2309. /// 修改密码
  2310. /// </summary>
  2311. /// <param name="sender"></param>
  2312. /// <param name="e"></param>
  2313. private void lblmdfpwd_uppassword(object sender, MouseButtonEventArgs e)
  2314. {
  2315. this.root.Children.Add(layer);
  2316. SetPwdWindow pwd = new SetPwdWindow();
  2317. pwd.password = password;
  2318. pwd.username = lname;
  2319. pwd.Owner = this;
  2320. pwd.ShowDialog();
  2321. if (pwd.DialogResult == true)
  2322. {
  2323. func();
  2324. MessageBox.Show("修改密码成功!");
  2325. return;
  2326. }
  2327. func();
  2328. }
  2329. #endregion
  2330. #region 标签切换时,更改标题栏内按钮状态
  2331. /// <summary>
  2332. /// 选择首页时上方按钮不可用
  2333. /// </summary>
  2334. private void homepage_disabled()
  2335. {
  2336. if (selectpage == "首页")
  2337. {
  2338. Header_Opacity_All_ChangeDark();
  2339. }
  2340. else
  2341. {
  2342. if(grade_state)
  2343. {
  2344. Header_Opacity_ChangeDark();
  2345. }
  2346. else
  2347. {
  2348. Header_Opacity_ChangeBright();
  2349. }
  2350. }
  2351. }
  2352. #endregion
  2353. #region 窗体加载完成后执行事件
  2354. /// <summary>
  2355. /// 窗体加载完成后执行事件
  2356. /// </summary>
  2357. /// <param name="sender"></param>
  2358. /// <param name="e"></param>
  2359. private void Window_ContentRendered(object sender, EventArgs e)
  2360. {
  2361. LoginWindow lw = new LoginWindow();
  2362. lw.Owner = this;
  2363. lw.ShowInTaskbar = false;
  2364. lw.ShowDialog();
  2365. //DialogHelper.ShowDialog(lw);
  2366. if (lw.DialogResult == false)
  2367. {
  2368. Application.Current.Shutdown();
  2369. }
  2370. lname = lw.loginname;
  2371. password = lw.password;
  2372. //entryclerk = lw.entryclerk;
  2373. //this.pagetitle.lbltestp.Content = lname;
  2374. //this.pagetitle.lblcompound.Content = lw.entryclerk;
  2375. //this.pagetitle.lbltestp.Content = lname.Length == 0 ? "匿名" : lname;
  2376. //this.pagetitle.lblcompound.Content = lw.entryclerk.Length == 0 ? "匿名" : lw.entryclerk;
  2377. SetAuth();
  2378. //if (lname.Equals("admin"))
  2379. //{
  2380. // //管理员
  2381. // this.Hide();
  2382. // AdminWindow am = new AdminWindow();
  2383. // am.Owner = this;
  2384. // am.Show();
  2385. //}
  2386. }
  2387. #endregion
  2388. /// <summary>
  2389. /// 设置 用户/管理员 所属页面
  2390. /// </summary>
  2391. private void SetAuth()
  2392. {
  2393. if (lname.Equals("admin"))
  2394. {
  2395. //管理员
  2396. this.pagefirst.Visibility = Visibility.Hidden;
  2397. this.pageuser.Visibility = Visibility.Visible;
  2398. this.lblhomepage.Content = "用户信息";
  2399. this.pagetitle.task.Visibility = Visibility.Hidden;
  2400. this.pagetitle.start_grade.Visibility = Visibility.Hidden;
  2401. //this.pagetitle.field.Visibility = Visibility.Hidden;
  2402. //this.pagetitle.canfill.Visibility = Visibility.Hidden;
  2403. this.pagetitle.history.Visibility = Visibility.Hidden;
  2404. //this.pagetitle.out_export.Visibility = Visibility.Hidden;
  2405. this.pagetitle.cangradesum.Visibility = Visibility.Hidden;
  2406. }
  2407. else
  2408. {
  2409. //普通人员
  2410. this.pagefirst.Visibility = Visibility.Visible;
  2411. this.pageuser.Visibility = Visibility.Hidden;
  2412. this.lblhomepage.Content = "任务";
  2413. this.pagetitle.task.Visibility = Visibility.Visible;
  2414. this.pagetitle.start_grade.Visibility = Visibility.Visible;
  2415. //this.pagetitle.field.Visibility = Visibility.Visible;
  2416. //this.pagetitle.canfill.Visibility = Visibility.Visible;
  2417. this.pagetitle.history.Visibility = Visibility.Visible;
  2418. //this.pagetitle.out_export.Visibility = Visibility.Visible;
  2419. this.pagetitle.cangradesum.Visibility = Visibility.Visible;
  2420. }
  2421. }
  2422. #region 评级检测,返回结果
  2423. /// <summary>
  2424. /// 回调接收参数,参数固定
  2425. /// </summary>
  2426. /// <param name="o">回调返回结果</param>
  2427. private void ReceivedControlData(object o)
  2428. {
  2429. try
  2430. {
  2431. if (o != null)
  2432. {
  2433. ControlData controlData = o as ControlData;
  2434. if (controlData != null)
  2435. {
  2436. //下面示例需要重写,需要定制化,
  2437. //控件是调用时传入的
  2438. if (controlData.Control is Label)//是label,在label上显示
  2439. {
  2440. Label lbl = controlData.Control as Label;
  2441. //lbl.Content += controlData.DataString + Environment.NewLine;
  2442. switch (controlData.CallbackDataType)
  2443. {
  2444. //返回数据是执行的脚本指定
  2445. case CallbackDataType.Command:
  2446. //txt.Text += "Command:" + controlData.DataString + Environment.NewLine;
  2447. //txt.ScrollToEnd();
  2448. break;
  2449. //返回数据是参数调用接口错误
  2450. case CallbackDataType.ParameterError:
  2451. //txt.Text += controlData.DataString + Environment.NewLine;
  2452. //txt.ScrollToEnd();
  2453. test_index++;
  2454. if (test_index == page_filenames[grade_selectpage].Count)
  2455. {
  2456. //pagetitle.IsEnabled = true;
  2457. //评级状态
  2458. grade_state = false;
  2459. pagetitle.start_grade.IsEnabled = true;
  2460. //this.cantab.IsEnabled = true;
  2461. this.pbw.Visibility = Visibility.Hidden;
  2462. Log.Info("发生错误隐藏进度条");
  2463. //评级结束,将数据写入表中
  2464. conn = new SQLiteConnection();
  2465. connstr = new SQLiteConnectionStringBuilder();
  2466. connstr.DataSource = path + "\\datas.db";
  2467. conn.ConnectionString = connstr.ToString();
  2468. conn.Open();
  2469. SQLiteCommand cmd = conn.CreateCommand();
  2470. cmd.CommandText = "insert into t_grade values('" + System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "','" +
  2471. image_name[grade_selectpage][2] + "','" + image_name[grade_selectpage][8] + "','" + image_name[grade_selectpage][0] + "','" +
  2472. image_name[grade_selectpage][7] + "','" + image_name[grade_selectpage][1] + "','" + image_name[grade_selectpage][5] +
  2473. "','" + image_name[grade_selectpage][3] + " " + image_name[grade_selectpage][4] + "','" + image_name[grade_selectpage][6] + "','','','" +
  2474. page_filenames[grade_selectpage].Count.ToString() + "','" + test_index.ToString() + "','0','','')";
  2475. cmd.ExecuteNonQuery();
  2476. conn.Close();
  2477. conn.Dispose();
  2478. }
  2479. break;
  2480. //返回是数据是最终想要的结果
  2481. case CallbackDataType.ReturnData:
  2482. test_index++;
  2483. Log.Info("开始接收数据");
  2484. JObject jsonObj = null;
  2485. jsonObj = JObject.Parse(controlData.DataString);
  2486. JObject content = JObject.Parse(jsonObj["content"].ToString());
  2487. JObject additional = JObject.Parse(content["additional"].ToString());
  2488. JObject details = JObject.Parse(content["details"].ToString());
  2489. if (details.Property("value") != null && details.Property("value").ToString() != "")
  2490. {
  2491. dic_pic[grade_selectpage][controlData.Index].grade_value = details["value"].ToString();
  2492. }
  2493. //增加前缀和后缀
  2494. jsonObj.Add("prefix", image_name[grade_selectpage][3]);
  2495. jsonObj.Add("suffix", image_name[grade_selectpage][4]);
  2496. Log.Info("写入结果开始:");
  2497. Log.Info("文件名:" + System.IO.Path.GetFileName(page_filenames[grade_selectpage][controlData.Index]));//计入日志返回整个结果
  2498. Log.Info("返回结果为:" + jsonObj.ToString());//计入日志返回整个结果
  2499. Log.Info("写入结果结束");
  2500. //test_index++;
  2501. //返回文件路径
  2502. string rename_fullname = "";
  2503. if (additional["image_path"] != null && additional["image_path"].ToString() != "")
  2504. {
  2505. Log.Info("写入image_path开始:");
  2506. Log.Info("文件名: " + System.IO.Path.GetFileName(page_filenames[grade_selectpage][controlData.Index]));//计入日志返回结果图片路径+名称
  2507. rename_fullname = additional["image_path"].ToString();
  2508. Log.Info("image_path为: " + additional["image_path"].ToString());//计入日志返回结果图片路径+名称
  2509. Log.Info("写入image_path结束");
  2510. //返回文件路径
  2511. // string rename_fullname = additional["image_path"].ToString();
  2512. //当前文件名称
  2513. //string filename = System.IO.Path.GetFileName(page_filenames[grade_selectpage][test_index]);
  2514. string filename = System.IO.Path.GetFileName(page_filenames[grade_selectpage][controlData.Index]);
  2515. //写入文件路径
  2516. string pathname = image_name[grade_selectpage][6] + "\\AI\\";
  2517. Log.Info("移动文件开始: ");
  2518. if (!System.IO.Directory.Exists(pathname))
  2519. {
  2520. System.IO.Directory.CreateDirectory(pathname);
  2521. }
  2522. Log.Info("文件名: " + filename);
  2523. //先移动文件再删除
  2524. if (System.IO.File.Exists(rename_fullname))
  2525. {
  2526. Log.Info("文件将从: " + rename_fullname + "移动到: " + pathname + filename);
  2527. System.IO.File.Copy(rename_fullname, pathname + filename, true);
  2528. Log.Info("移动完成。 文件从: " + rename_fullname + " 移动到了: " + pathname + filename);
  2529. Log.Info("将要删除: " + rename_fullname + "文件");
  2530. System.IO.File.Delete(rename_fullname);
  2531. Log.Info("删除完成: " + rename_fullname + "文件");
  2532. Log.Info("移动文件结束 ");
  2533. }
  2534. //将JSON串的文件路径更改
  2535. additional["image_path"] = pathname + filename;
  2536. content["additional"] = additional;
  2537. jsonObj["content"] = content;
  2538. //写文件
  2539. Log.Info("生成AI文件即将开始:");
  2540. Log.Info("文件名: " + filename);
  2541. filename = pathname + filename;
  2542. filename = filename.Substring(0, filename.Length - 4) + ".ai";
  2543. Log.Info("马上开始生成AI文件");
  2544. using (System.IO.StreamWriter file = new System.IO.StreamWriter(filename, false))
  2545. {
  2546. Log.Info("生成的AI文件为: " + filename);
  2547. Log.Info("开始向AI文件写入数据");
  2548. Log.Info("正在向AI文件写入结果数据,AI文件路径与名称为: " + filename);
  2549. file.WriteLine(jsonObj.ToString());// 直接追加文件末尾,换行
  2550. file.Close();
  2551. Log.Info("向AI文件写入了: " + jsonObj.ToString());
  2552. Log.Info("AI文件写入结束");
  2553. }
  2554. /// dic_pic[grade_selectpage][test_index].Tag
  2555. dic_pic[grade_selectpage][controlData.Index].Tag = jsonObj.ToString();
  2556. dic_pic[grade_selectpage][controlData.Index].btnanalysis.Visibility = Visibility.Visible;//显示分析过程字样
  2557. dic_pic[grade_selectpage][controlData.Index].field.Fill = new SolidColorBrush(Color.FromArgb(0x80, 0xFF, 0xFF, 0xFF));
  2558. dic_pic[grade_selectpage][controlData.Index].fieldr.Fill = new SolidColorBrush(Color.FromArgb(0x80, 0xFF, 0xFF, 0xFF));
  2559. dic_pic[grade_selectpage][controlData.Index].Frozen = true;
  2560. //未识别的隐藏显示改为未识别参考下面的东西
  2561. // dic_pic[grade_selectpage][controlData.Index].btnanalysis.Visibility = Visibility.Hidden;
  2562. //dic_pic[grade_selectpage][test_index].lblpicmsg.Content= dic_pic[grade_selectpage][test_index].lblpicmsg.Content.ToString()+" " + content["title"] + " " + additional["zoom_key"];
  2563. //zm:修改界面显示,显示为文件名称
  2564. //显示标题与放大倍数
  2565. if (additional["zoom_key"].ToString() == "" || additional["zoom_key"] == null)
  2566. {
  2567. dic_pic[grade_selectpage][controlData.Index].lblpicmsg.Content = System.IO.Path.GetFileName(page_filenames[grade_selectpage][controlData.Index]) +
  2568. " " + content["title"] + " " + additional["zoom_key"];
  2569. //dic_pic[grade_selectpage][controlData.Index].lblpicmsg.Content = (controlData.Index + 1).ToString() + image_name[grade_selectpage][4] +
  2570. //" " + content["title"] + " " + additional["zoom_key"];
  2571. }
  2572. else
  2573. {
  2574. dic_pic[grade_selectpage][controlData.Index].lblpicmsg.Content = System.IO.Path.GetFileName(page_filenames[grade_selectpage][controlData.Index]) +
  2575. " " + content["title"] + " " + additional["zoom_key"] + "X";
  2576. //dic_pic[grade_selectpage][controlData.Index].lblpicmsg.Content = (controlData.Index + 1).ToString() + image_name[grade_selectpage][4] +
  2577. //" " + content["title"] + " " + additional["zoom_key"] + "X";
  2578. }
  2579. #region 添加或修改数据库
  2580. //写入数据库
  2581. if (test_index == page_filenames[grade_selectpage].Count)
  2582. {
  2583. if (GetDatByPath(image_name[grade_selectpage][4]) > 0)
  2584. {
  2585. //修改数据
  2586. Log.Info("更新数据库开始");
  2587. //pagetitle.IsEnabled = true;//标题
  2588. //this.cantab.IsEnabled = true;//菜单选项卡
  2589. //this.pbw.Visibility = Visibility.Hidden; //进度隐藏
  2590. grade_state = false;
  2591. pagetitle.start_grade.IsEnabled = true;
  2592. //评级结束,将数据写入表中
  2593. conn = new SQLiteConnection();
  2594. connstr = new SQLiteConnectionStringBuilder();
  2595. connstr.DataSource = path + "\\datas.db";
  2596. conn.ConnectionString = connstr.ToString();
  2597. conn.Open();
  2598. Log.Info("未向数据库更新时数据为");
  2599. Log.Info("评级时间:--");
  2600. Log.Info("评级项目:" + image_name[grade_selectpage][2]);
  2601. Log.Info("items:" + image_name[grade_selectpage][8]);
  2602. Log.Info("钢种:" + image_name[grade_selectpage][0]);
  2603. Log.Info("catagory:" + image_name[grade_selectpage][7]);
  2604. Log.Info("评级标准:" + image_name[grade_selectpage][1]);
  2605. Log.Info("检测仪器:" + image_name[grade_selectpage][5]);
  2606. Log.Info("编号规则:" + image_name[grade_selectpage][3] + " " + image_name[grade_selectpage][4]);
  2607. Log.Info("图像目录:" + image_name[grade_selectpage][6]);
  2608. Log.Info("操作员:--");
  2609. Log.Info("复核员:--");
  2610. Log.Info("图像数量:" + page_filenames[grade_selectpage].Count.ToString());
  2611. Log.Info("完成数量:" + test_index.ToString());
  2612. Log.Info("生成报告状态:--");
  2613. Log.Info("生成报告时间:--");
  2614. Log.Info("生成报告人:--");
  2615. SQLiteCommand cmd = conn.CreateCommand();
  2616. cmd.CommandText = "UPDATE t_grade SET \"评级时间\"='"+ DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") +"' " +
  2617. ", \"评级项目\"='"+ image_name[grade_selectpage][2] + "' , items = '"+ image_name[grade_selectpage][8] + "', \"钢种\" = '"+ image_name[grade_selectpage][0] + "'" +
  2618. ", catagory = '"+ image_name[grade_selectpage][7] + "' , \"评级标准\" = '"+ image_name[grade_selectpage][1] + "' " +
  2619. ", \"检测仪器\"='"+ image_name[grade_selectpage][5] + "' , \"编号规则\" = '"+ image_name[grade_selectpage][3] + " " + image_name[grade_selectpage][4] + "' " +
  2620. ", \"操作员\"='' AND \"复合员\" = '' " +
  2621. ", \"图像数量\"='"+ page_filenames[grade_selectpage].Count.ToString() + "' , \"完成数量\" = '"+ test_index.ToString() + "' " +
  2622. ", \"生成报告状态\"='0' , \"生成报告时间\" = ''" +
  2623. " , \"生成报告人\" = '' WHERE \"图像目录\" = '"+image_name[grade_selectpage][6]+"'";
  2624. cmd.ExecuteNonQuery();
  2625. Log.Info("向数据库更新数据完成:");
  2626. Log.Info("向数据库更新了以下数据:");
  2627. Log.Info("未向数据库更新时数据为");
  2628. Log.Info("评级时间:--");
  2629. Log.Info("评级项目:" + image_name[grade_selectpage][2]);
  2630. Log.Info("items:" + image_name[grade_selectpage][8]);
  2631. Log.Info("钢种:" + image_name[grade_selectpage][0]);
  2632. Log.Info("catagory:" + image_name[grade_selectpage][7]);
  2633. Log.Info("评级标准:" + image_name[grade_selectpage][1]);
  2634. Log.Info("检测仪器:" + image_name[grade_selectpage][5]);
  2635. Log.Info("编号规则:" + image_name[grade_selectpage][3] + " " + image_name[grade_selectpage][4]);
  2636. Log.Info("图像目录:" + image_name[grade_selectpage][6]);
  2637. Log.Info("操作员:--");
  2638. Log.Info("复核员:--");
  2639. Log.Info("图像数量:" + page_filenames[grade_selectpage].Count.ToString());
  2640. Log.Info("完成数量:" + test_index.ToString());
  2641. Log.Info("生成报告状态:--");
  2642. Log.Info("生成报告时间:--");
  2643. Log.Info("生成报告人:--");
  2644. conn.Close();
  2645. conn.Dispose();
  2646. Log.Info("更新数据库结束");
  2647. }
  2648. else
  2649. {
  2650. //添加数据
  2651. Log.Info("写入数据库开始");
  2652. //pagetitle.IsEnabled = true;//标题
  2653. //this.cantab.IsEnabled = true;//菜单选项卡
  2654. //this.pbw.Visibility = Visibility.Hidden; //进度隐藏
  2655. grade_state = false;
  2656. pagetitle.start_grade.IsEnabled = true;
  2657. //评级结束,将数据写入表中
  2658. conn = new SQLiteConnection();
  2659. connstr = new SQLiteConnectionStringBuilder();
  2660. connstr.DataSource = path + "\\datas.db";
  2661. conn.ConnectionString = connstr.ToString();
  2662. conn.Open();
  2663. Log.Info("未向数据库插入时数据为");
  2664. Log.Info("评级时间:--");
  2665. Log.Info("评级项目:" + image_name[grade_selectpage][2]);
  2666. Log.Info("items:" + image_name[grade_selectpage][8]);
  2667. Log.Info("钢种:" + image_name[grade_selectpage][0]);
  2668. Log.Info("catagory:" + image_name[grade_selectpage][7]);
  2669. Log.Info("评级标准:" + image_name[grade_selectpage][1]);
  2670. Log.Info("检测仪器:" + image_name[grade_selectpage][5]);
  2671. Log.Info("编号规则:" + image_name[grade_selectpage][3] + " " + image_name[grade_selectpage][4]);
  2672. Log.Info("图像目录:" + image_name[grade_selectpage][6]);
  2673. Log.Info("操作员:--");
  2674. Log.Info("复核员:--");
  2675. Log.Info("图像数量:" + page_filenames[grade_selectpage].Count.ToString());
  2676. Log.Info("完成数量:" + test_index.ToString());
  2677. Log.Info("生成报告状态:--");
  2678. Log.Info("生成报告时间:--");
  2679. Log.Info("生成报告人:--");
  2680. SQLiteCommand cmd = conn.CreateCommand();
  2681. cmd.CommandText = "insert into t_grade values('" + System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "','" +
  2682. image_name[grade_selectpage][2] + "','" + image_name[grade_selectpage][8] + "','" + image_name[grade_selectpage][0] + "','" +
  2683. image_name[grade_selectpage][7] + "','" + image_name[grade_selectpage][1] + "','" + image_name[grade_selectpage][5] +
  2684. "','" + image_name[grade_selectpage][3] + " " + image_name[grade_selectpage][4] + "','" + image_name[grade_selectpage][6] + "','','','" +
  2685. page_filenames[grade_selectpage].Count.ToString() + "','" + test_index.ToString() + "','0','','')";
  2686. cmd.ExecuteNonQuery();
  2687. Log.Info("向数据库插入数据完成:");
  2688. Log.Info("向数据库插入了以下数据:");
  2689. Log.Info("未向数据库插入时数据为");
  2690. Log.Info("评级时间:--");
  2691. Log.Info("评级项目:" + image_name[grade_selectpage][2]);
  2692. Log.Info("items:" + image_name[grade_selectpage][8]);
  2693. Log.Info("钢种:" + image_name[grade_selectpage][0]);
  2694. Log.Info("catagory:" + image_name[grade_selectpage][7]);
  2695. Log.Info("评级标准:" + image_name[grade_selectpage][1]);
  2696. Log.Info("检测仪器:" + image_name[grade_selectpage][5]);
  2697. Log.Info("编号规则:" + image_name[grade_selectpage][3] + " " + image_name[grade_selectpage][4]);
  2698. Log.Info("图像目录:" + image_name[grade_selectpage][6]);
  2699. Log.Info("操作员:--");
  2700. Log.Info("复核员:--");
  2701. Log.Info("图像数量:" + page_filenames[grade_selectpage].Count.ToString());
  2702. Log.Info("完成数量:" + test_index.ToString());
  2703. Log.Info("生成报告状态:--");
  2704. Log.Info("生成报告时间:--");
  2705. Log.Info("生成报告人:--");
  2706. conn.Close();
  2707. conn.Dispose();
  2708. Log.Info("写入数据库结束");
  2709. }
  2710. }
  2711. #endregion
  2712. dic_pic[grade_selectpage][controlData.Index].btnanalysis.Visibility = Visibility.Visible;//显示分析过程字样
  2713. dic_pic[grade_selectpage][controlData.Index].btnanalysis.Content = "分析过程";
  2714. dic_pic[grade_selectpage][controlData.Index].btnanalysis.IsEnabled = true;
  2715. dic_pic[grade_selectpage][controlData.Index].btnanalysis.Background = new SolidColorBrush(Color.FromRgb(255, 165, 0));
  2716. }
  2717. else
  2718. {
  2719. dic_pic[grade_selectpage][controlData.Index].btnanalysis.Visibility = Visibility.Visible;//显示分析过程字样
  2720. dic_pic[grade_selectpage][controlData.Index].btnanalysis.Content = "未能分析";
  2721. dic_pic[grade_selectpage][controlData.Index].btnanalysis.IsEnabled = false;
  2722. dic_pic[grade_selectpage][controlData.Index].btnanalysis.Background = new SolidColorBrush(Color.FromRgb(255, 165, 0));
  2723. }
  2724. Log.Info("接收数据次数test_index" + test_index + " 次");
  2725. //进度,这是大进度条
  2726. this.pbw.progbar.Value = test_index;//进度条的value
  2727. double percent = (double)test_index / (double)page_filenames[grade_selectpage].Count;//算百分比
  2728. this.pbw.progbar_num.Content = percent.ToString("P0");
  2729. string shownum = test_index + "/" + page_filenames[grade_selectpage].Count;//(1000/1000)当前处理多少文件
  2730. this.pbw.show_num.Content = shownum;
  2731. //缩小后的进度条
  2732. this.minpbw.minprogbar.Value = test_index;//进度条的value
  2733. this.minpbw.minprogbar_num.Content = percent.ToString("P0");
  2734. this.minpbw.minshow_num.Content = shownum;
  2735. //如果接收结果与图片个数相同
  2736. if (test_index == page_filenames[grade_selectpage].Count)
  2737. {
  2738. this.cantab.IsEnabled = true;//菜单选项卡
  2739. grade_state = false;
  2740. Header_Opacity_ChangeBright();
  2741. pagetitle.isclosed = true;
  2742. this.pbw.Visibility = Visibility.Hidden;//进度隐藏
  2743. this.minpbw.Visibility = Visibility.Hidden;//进度隐藏
  2744. this.CompleteTestWindow.Visibility = Visibility.Visible;//显示完成对话框
  2745. this.completetest.use_time.Content = TimeDiff(time_start_grade, Convert.ToDateTime(DateTime.Now));
  2746. this.completetest.image_number.Content = page_filenames[grade_selectpage].Count + " 张图片检测完成";
  2747. }
  2748. Log.Info("接收数据结束。");
  2749. break;
  2750. case CallbackDataType.Progress:
  2751. string AI_progress = controlData.DataString;
  2752. //string[] sArray = AI_progress.Split(new char[1] { ':' });
  2753. string str = AI_progress.Substring(AI_progress.LastIndexOf(":") + 1);
  2754. if (page_filenames[grade_selectpage].Count - 1 ==Convert.ToInt32(str))
  2755. {
  2756. //评级停止,使评级状态置false
  2757. grade_state = false;
  2758. //允许关闭
  2759. pagetitle.isclosed = true;
  2760. //是否强制关闭当前检测
  2761. isforced = false;
  2762. //启用进度条取消按钮
  2763. this.pbw.btncancle.IsEnabled = true;
  2764. //正在进行AI检测,请稍候...
  2765. this.pbw.progbar_msg.Content = "正在进行AI检测,请稍候...";
  2766. //隐藏进度条
  2767. this.pbw.Visibility = Visibility.Hidden;
  2768. this.minpbw.Visibility = Visibility.Hidden;//进度隐藏
  2769. this.ForcedCancelUC.Visibility = Visibility.Hidden;
  2770. //标题按钮变亮
  2771. Header_Opacity_ChangeBright();
  2772. }
  2773. break;
  2774. //其他就是info,是过程中的日志信息、ai调用内部错误信息等
  2775. default:
  2776. //其他的中间过程日志信息先不显示
  2777. break;
  2778. }
  2779. }
  2780. //if (controlData.Control is TextBox)//是textbox,在textbox上显示
  2781. //{
  2782. // TextBox txt = controlData.Control as TextBox;
  2783. // switch (controlData.CallbackDataType)
  2784. // {
  2785. // //返回数据是执行的脚本指定
  2786. // case CallbackDataType.Command:
  2787. // txt.Text += "Command:" + controlData.DataString + Environment.NewLine;
  2788. // txt.ScrollToEnd();
  2789. // break;
  2790. // //返回数据是参数调用接口错误
  2791. // case CallbackDataType.ParameterError:
  2792. // txt.Text += controlData.DataString + Environment.NewLine;
  2793. // txt.ScrollToEnd();
  2794. // break;
  2795. // //返回是数据是最终想要的结果
  2796. // case CallbackDataType.ReturnData:
  2797. // txt.Text += controlData.DataString + Environment.NewLine;
  2798. // txt.ScrollToEnd();
  2799. // break;
  2800. // //其他就是info,是过程中的日志信息、ai调用内部错误信息等
  2801. // default:
  2802. // //其他的中间过程日志信息先不显示
  2803. // break;
  2804. // }
  2805. //}
  2806. }
  2807. }
  2808. }
  2809. catch (Exception e)
  2810. {
  2811. Log.Info("出现错误!");
  2812. Log.Info("出错信息为:" + e.Message);
  2813. //System.Windows.MessageBox.Show(e.Message, "错误", MessageBoxButton.OK, MessageBoxImage.Error);
  2814. }
  2815. finally
  2816. {
  2817. //try
  2818. //{
  2819. // test_index++;
  2820. // ///应该是这
  2821. // this.pbw.progbar.Value = test_index;
  2822. // double percent = (double)test_index / (double)page_filenames[selectpage].Count;
  2823. // //ll后加的
  2824. // string shownum = "(" + test_index + "/" + page_filenames[selectpage].Count + ")";
  2825. // this.pbw.show_num.Content = shownum;
  2826. // this.pbw.progbar_num.Content = percent.ToString("P0");
  2827. //}
  2828. //catch (Exception ex)
  2829. //{
  2830. // System.Windows.MessageBox.Show(ex.Message, "错误", MessageBoxButton.OK, MessageBoxImage.Error);
  2831. //}
  2832. }
  2833. }
  2834. #endregion
  2835. #region 根据图像目录查询数据
  2836. /// <summary>
  2837. ///
  2838. /// </summary>
  2839. /// <param name="path"></param>
  2840. /// <returns></returns>
  2841. private int GetDatByPath(string strpath)
  2842. {
  2843. int count = 0;
  2844. try
  2845. {
  2846. conn = new SQLiteConnection();
  2847. connstr = new SQLiteConnectionStringBuilder();
  2848. connstr.DataSource = path + "\\datas.db";
  2849. conn.ConnectionString = connstr.ToString();
  2850. conn.Open();
  2851. SQLiteDataAdapter da = new SQLiteDataAdapter("SELECT count(*) AS count FROM t_grade WHERE \"图像目录\"='"+ strpath + "'", conn);
  2852. DataTable ds = new DataTable();
  2853. da.Fill(ds);
  2854. count = Convert.ToInt32(ds.Rows[0][0]);
  2855. }
  2856. catch (Exception ex)
  2857. {
  2858. }
  2859. finally
  2860. {
  2861. conn.Close();
  2862. conn.Dispose();
  2863. }
  2864. return count;
  2865. }
  2866. #endregion
  2867. #region 窗体移动
  2868. /// <summary>
  2869. /// 窗体移动
  2870. /// </summary>
  2871. /// <param name="sender"></param>
  2872. /// <param name="e"></param>
  2873. private void MainForm_MouseMove(object sender, MouseEventArgs e)
  2874. {
  2875. if (e.LeftButton == MouseButtonState.Pressed)
  2876. {
  2877. this.DragMove();
  2878. }
  2879. }
  2880. #endregion
  2881. #region 屏蔽右键菜单右键弹出
  2882. /// <summary>
  2883. /// 屏蔽右键菜单右键弹出
  2884. /// </summary>
  2885. /// <param name="sender"></param>
  2886. /// <param name="e"></param>
  2887. private void Cmd_Initialized(object sender, EventArgs e)
  2888. {
  2889. this.cmd.ContextMenu = null;
  2890. }
  2891. #endregion
  2892. #region 菜单选项卡 鼠标移除后发生
  2893. /// <summary>
  2894. /// 菜单选项卡 鼠标移除后发生
  2895. /// </summary>
  2896. /// <param name="sender"></param>
  2897. /// <param name="e"></param>
  2898. private void MenuMouseLeave(object sender, MouseEventArgs e)
  2899. {
  2900. Uri uri = new Uri("img/down.png", UriKind.Relative);
  2901. BitmapImage img = new BitmapImage(uri);
  2902. img_menu.Source = img;
  2903. }
  2904. #endregion
  2905. #region 菜单选项卡 鼠标移动发生
  2906. /// <summary>
  2907. /// 菜单选项卡 鼠标移动发生
  2908. /// </summary>
  2909. /// <param name="sender"></param>
  2910. /// <param name="e"></param>
  2911. private void MenuMouseMove(object sender, MouseEventArgs e)
  2912. {
  2913. Uri uri = new Uri("img/down2.png", UriKind.Relative);
  2914. BitmapImage img = new BitmapImage(uri);
  2915. img_menu.Source = img;
  2916. }
  2917. #endregion
  2918. #region 获取窗体宽度
  2919. /// <summary>
  2920. /// //获取窗体宽度
  2921. /// </summary>
  2922. /// <returns></returns>
  2923. private int MainWindow_Width()
  2924. {
  2925. int width = 0;
  2926. width = (int)(this.cantab.Width - (157 + 57)) / 142;
  2927. //Console.WriteLine("窗体宽" + this.cantab.Width + " " + width.ToString());
  2928. return width;
  2929. //int width = 0;
  2930. //width = (int)(this.Width - (157 + 57)) / 142;
  2931. //Console.WriteLine("窗体宽"+ this.Width+" "+width.ToString());
  2932. //return width;
  2933. }
  2934. #endregion
  2935. #region 窗体变化获取大小
  2936. /// <summary>
  2937. /// 窗体变化获取大小
  2938. /// </summary>
  2939. /// <param name="sender"></param>
  2940. /// <param name="e"></param>
  2941. private void MainWindow_Resize(object sender, System.EventArgs e)
  2942. {
  2943. tab_num= MainWindow_Width();
  2944. }
  2945. #endregion
  2946. private void pagetitle_Loaded()
  2947. {
  2948. }
  2949. }
  2950. }