AdjustCameraControl.cs 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using PaintDotNet.Base.SettingModel;
  11. using System.Collections;
  12. using PaintDotNet.ImageCollect.CameraManager;
  13. using TUCAMAPI;
  14. using TUCamera;
  15. using OpenCvSharp;
  16. using System.Threading;
  17. using OpenCvSharp.Extensions;
  18. namespace PaintDotNet.Setting.LabelComponent
  19. {
  20. /// <summary>
  21. /// 相机设置,调节界面
  22. /// </summary>
  23. public class AdjustCameraControl : UserControl
  24. {
  25. #region 控件
  26. /// <summary>
  27. /// 增益值下拉选
  28. /// </summary>
  29. string[] gainArray = new string[] { PdnResources.GetString("Menu.Highgai.Text"), PdnResources.GetString("Menu.Lowgain.Text") };
  30. /// <summary>
  31. /// 相机参数的Model
  32. /// </summary>
  33. private CameraParamModel m_cameraParamModel;
  34. private bool m_immediately;
  35. private bool m_toAddExtraButtons = false;
  36. private TUCamera.TUCamera m_camera;
  37. private System.Timers.Timer m_aeTimer;
  38. #endregion
  39. public AdjustCameraControl(CameraParamModel model, bool immediately, bool toAddExtraButtons = false)
  40. {
  41. m_cameraParamModel = model;
  42. m_immediately = immediately;
  43. m_toAddExtraButtons = toAddExtraButtons;
  44. m_camera = TUCameraManager.GetInstance().GetCurrentCamera();
  45. InitializeComponent();
  46. InitializeLanguageText();
  47. InitColorAdjustRange();
  48. InitializeControlData();
  49. }
  50. public void ResetCameraParamModel(CameraParamModel model)
  51. {
  52. m_cameraParamModel = model;
  53. InitColorAdjustRange();
  54. InitializeControlData();
  55. }
  56. int resolution_width = 2448;
  57. int resolution_height = 2048;
  58. private void InitColorAdjustRange()
  59. {
  60. if (m_camera.IsOpen())
  61. {
  62. // Get red channel range
  63. int minVal = 0;
  64. int maxVal = 0;
  65. m_camera.GetColorChannelRang(ColorChannel.RED, ref minVal, ref maxVal);
  66. redChannelTB.SetRange(minVal, maxVal);
  67. // Get green channel range
  68. m_camera.GetColorChannelRang(ColorChannel.GREEN, ref minVal, ref maxVal);
  69. greenChannelTB.SetRange(minVal, maxVal);
  70. // Get blue channel range
  71. m_camera.GetColorChannelRang(ColorChannel.BLUE, ref minVal, ref maxVal);
  72. blueChannelTB.SetRange(minVal, maxVal);
  73. var range = m_camera.GetGlobalGainRange();
  74. trbGain.SetRange((int)range.Min, (int)range.Max);
  75. lblGainMin.Text = trbGain.Minimum.ToString();
  76. lblGainMax.Text = trbGain.Maximum.ToString();
  77. // 饱和度
  78. minVal = 0;
  79. maxVal = 0;
  80. m_camera.GetSaturationRange(ref minVal, ref maxVal);
  81. baoheduTBar.SetRange(minVal, maxVal);
  82. lblSaturationMinVal.Text = ((int)minVal).ToString();
  83. lblSaturationMaxVal.Text = ((int)maxVal).ToString();
  84. var bitmap = m_camera.OneShoot();
  85. if (bitmap == null) return;
  86. showHistImg(BitmapConverter.ToMat(bitmap));
  87. }
  88. }
  89. Mat[] oldHists = new Mat[] { new Mat(), new Mat(), new Mat() };
  90. private void showHistImg(Mat BoxMat)
  91. {
  92. Mat[] mats = Cv2.Split(BoxMat);//一张图片,将panda拆分成3个图片装进mat
  93. if (mats.Count() == 1)
  94. {
  95. Mat[] mats011 = new Mat[] { mats[0] };//panda的第一个通道,也就是B
  96. int[] channels011 = new int[] { 0 };//一个通道,初始化为通道0,这些东西可以共用设置一个就行
  97. int[] histsize11 = new int[] { 256 };//一个通道,初始化为256箱子
  98. Rangef[] range11 = new Rangef[1];//一个通道,范围
  99. range11[0] = new Rangef(0.0F, 256.0F);
  100. Mat mask11 = new Mat();//不做掩码
  101. Cv2.CalcHist(mats011, channels011, mask11, oldHists[0], 1, histsize11, range11);//对被拆分的图片单独进行计算
  102. return;
  103. }
  104. Mat[] mats0 = new Mat[] { mats[0] };//panda的第一个通道,也就是B
  105. Mat[] mats1 = new Mat[] { mats[1] };//panda的第二个通道,也就是G
  106. Mat[] mats2 = new Mat[] { mats[2] };//panda的第三个通道,也就是R
  107. int[] channels0 = new int[] { 0 };//一个通道,初始化为通道0,这些东西可以共用设置一个就行
  108. int[] channels1 = new int[] { 0 };
  109. int[] channels2 = new int[] { 0 };
  110. int[] histsize = new int[] { 256 };//一个通道,初始化为256箱子
  111. Rangef[] range = new Rangef[1];//一个通道,范围
  112. range[0] = new Rangef(0.0F, 256.0F);
  113. Mat mask = new Mat();//不做掩码
  114. Cv2.CalcHist(mats0, channels0, mask, oldHists[0], 1, histsize, range);//对被拆分的图片单独进行计算
  115. Cv2.CalcHist(mats1, channels1, mask, oldHists[1], 1, histsize, range);//对被拆分的图片单独进行计算
  116. Cv2.CalcHist(mats2, channels2, mask, oldHists[2], 1, histsize, range);//对被拆分的图片单独进行计算
  117. }
  118. private string UpdateExposureTime(UInt64 exposureTime)
  119. {
  120. string str = "";
  121. int sec = 0;
  122. int msec = 0;
  123. int usec = 0;
  124. m_camera.UpdateExposureTime(ref sec, ref msec, ref usec, exposureTime);
  125. if (sec > 0)
  126. {
  127. str += sec + "s";
  128. }
  129. else if (msec > 0)
  130. {
  131. str += msec + "ms";
  132. }
  133. else if (usec > 0)
  134. {
  135. str += usec + "μs";
  136. }
  137. return str;
  138. }
  139. /// <summary>
  140. /// 设置下拉等数据源
  141. /// </summary>
  142. private void InitializeControlData()
  143. {
  144. // 曝光时间
  145. int atExpValue = (int)(m_cameraParamModel.parame.LNExposure);
  146. NewMethod(atExpValue);
  147. // 增益值调整
  148. int gainValue = m_cameraParamModel.parame.GlobalGain;
  149. if (gainValue >= this.trbGain.Minimum && gainValue <= this.trbGain.Maximum)
  150. {
  151. this.trbGain.Value = gainValue;
  152. }
  153. // 颜色值
  154. int redChannelValue = (int)m_cameraParamModel.parame.RedChannel;
  155. if (redChannelValue >= this.redChannelTB.Minimum && redChannelValue <= this.redChannelTB.Maximum)
  156. {
  157. this.redChannelTB.Value = redChannelValue;
  158. }
  159. int greenChannelValue = (int)m_cameraParamModel.parame.GreenChannel;
  160. if (greenChannelValue >= this.greenChannelTB.Minimum && greenChannelValue <= this.greenChannelTB.Maximum)
  161. {
  162. this.greenChannelTB.Value = greenChannelValue;
  163. }
  164. int blueChannelValue = (int)m_cameraParamModel.parame.BlueChannel;
  165. if (blueChannelValue >= this.blueChannelTB.Minimum && blueChannelValue <= this.blueChannelTB.Maximum)
  166. {
  167. this.blueChannelTB.Value = blueChannelValue;
  168. }
  169. // 白平衡
  170. if (m_cameraParamModel.parame.WhiteBalance == 1)
  171. {
  172. AutoWhiteBalance(true);
  173. }
  174. else
  175. {
  176. if (m_cameraParamModel.parame.FMExposure == 1)
  177. {
  178. m_camera.SetColorTemperatureByString("3200K");
  179. }
  180. else if (m_cameraParamModel.parame.FMExposure == 2)
  181. {
  182. m_camera.SetColorTemperatureByString("5500K");
  183. }
  184. AutoWhiteBalance(false);
  185. }
  186. // 显示颜色值通道
  187. if (m_cameraParamModel.parame.ShowColorPBoxFlag == 1)
  188. {
  189. this.xianshiColourCheckBox.Checked = true;
  190. }
  191. else
  192. {
  193. this.xianshiColourCheckBox.Checked = false;
  194. }
  195. // 饱和度
  196. int baoheduTBarValue = this.m_cameraParamModel.parame.Saturation;
  197. if (baoheduTBarValue >= this.baoheduTBar.Minimum && baoheduTBarValue <= this.baoheduTBar.Maximum)
  198. {
  199. this.baoheduTBar.Value = this.m_cameraParamModel.parame.Saturation;
  200. }
  201. if (m_toAddExtraButtons)
  202. {
  203. this.button6.Visible = true;
  204. this.button7.Visible = true;
  205. }
  206. }
  207. private void InitializeLanguageText()
  208. {
  209. this.groupBox2.Text = PdnResources.GetString("Menu.Gainvalueadjustment.text");
  210. this.groupBox3.Text = PdnResources.GetString("Menu.Image.WhiteBalance.Text");
  211. this.button1.Text = PdnResources.GetString("Menu.Primarywhitebalance.Text");
  212. this.label12.Text = PdnResources.GetString("Menu.Blue.text");
  213. this.label11.Text = PdnResources.GetString("Menu.green.text");
  214. this.label10.Text = PdnResources.GetString("Menu.red.text");
  215. this.label9.Text = PdnResources.GetString("Menu.yellow.text");
  216. this.label8.Text = PdnResources.GetString("Menu.Magenta.text");
  217. this.label7.Text = PdnResources.GetString("Menu.aqua.text");
  218. this.xianshiColourCheckBox.Text = PdnResources.GetString("Menu.Displaycolorvaluechannel.text");
  219. this.button3.Text = PdnResources.GetString("Menu.auto.text");
  220. this.button2.Text = PdnResources.GetString("Menu.Manual.text");
  221. this.groupBox4.Text = PdnResources.GetString("Menu.Colorandsaturation.Text");
  222. this.label13.Text = PdnResources.GetString("Menu.saturation.text") + ":";
  223. }
  224. private void InitializeComponent()
  225. {
  226. this.SuspendLayout();
  227. //
  228. // AdjustCameraControl
  229. //
  230. this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
  231. this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
  232. this.Name = "AdjustCameraControl";
  233. this.Size = new System.Drawing.Size(490, 605);
  234. this.ResumeLayout(false);
  235. }
  236. private void TBar_MouseWheel(object sender, MouseEventArgs e)
  237. {
  238. ((HandledMouseEventArgs)e).Handled = true;
  239. }
  240. /// <summary>
  241. /// 手动白平衡
  242. /// </summary>
  243. /// <param name="sender"></param>
  244. /// <param name="e"></param>
  245. private void button2_Click(object sender, EventArgs e)
  246. {
  247. m_cameraParamModel.parame.FMExposure = 0;
  248. AutoWhiteBalance(false);
  249. Form form = Application.OpenForms["CameraPreviewDialog"];
  250. if (form != null)
  251. {
  252. ((ImageCollect.CameraPreviewDialog)form).m_use = false;
  253. ((ImageCollect.CameraPreviewDialog)form).o_use = false;
  254. }
  255. }
  256. /// <summary>
  257. /// 自动白平衡按钮点击
  258. /// </summary>
  259. /// <param name="sender"></param>
  260. /// <param name="e"></param>
  261. private void button3_Click(object sender, EventArgs e)
  262. {
  263. AutoWhiteBalance(true);
  264. Thread.Sleep(1500);
  265. UpdateColorTemperature();
  266. Form form = Application.OpenForms["CameraPreviewDialog"];
  267. if (form != null)
  268. {
  269. ((ImageCollect.CameraPreviewDialog)form).m_use = false;
  270. ((ImageCollect.CameraPreviewDialog)form).o_use = false;
  271. }
  272. }
  273. /// <summary>
  274. /// 自动白平衡一次
  275. /// </summary>
  276. /// <param name="sender"></param>
  277. /// <param name="e"></param>
  278. private void button1_Click(object sender, EventArgs e)
  279. {
  280. AutoWhiteBalance(true);
  281. Thread.Sleep(1500);
  282. m_cameraParamModel.parame.FMExposure = 0;
  283. AutoWhiteBalance(false);
  284. Form form = Application.OpenForms["CameraPreviewDialog"];
  285. if (form != null)
  286. {
  287. ((ImageCollect.CameraPreviewDialog)form).m_use = false;
  288. ((ImageCollect.CameraPreviewDialog)form).o_use = false;
  289. }
  290. }
  291. /// <summary>
  292. /// 色温3200K
  293. /// </summary>
  294. /// <param name="sender"></param>
  295. /// <param name="e"></param>
  296. private void button4_Click(object sender, EventArgs e)
  297. {
  298. m_cameraParamModel.parame.FMExposure = 1;
  299. m_camera.SetColorTemperatureByString("3200K");
  300. AutoWhiteBalance(false);
  301. Form form = Application.OpenForms["CameraPreviewDialog"];
  302. if (form != null)
  303. {
  304. ((ImageCollect.CameraPreviewDialog)form).m_use = false;
  305. ((ImageCollect.CameraPreviewDialog)form).o_use = false;
  306. }
  307. }
  308. /// <summary>
  309. /// 色温5500K
  310. /// </summary>
  311. /// <param name="sender"></param>
  312. /// <param name="e"></param>
  313. private void button5_Click(object sender, EventArgs e)
  314. {
  315. m_cameraParamModel.parame.FMExposure = 2;
  316. m_camera.SetColorTemperatureByString("5500K");
  317. AutoWhiteBalance(false);
  318. Form form = Application.OpenForms["CameraPreviewDialog"];
  319. if (form != null)
  320. {
  321. ((ImageCollect.CameraPreviewDialog)form).m_use = false;
  322. ((ImageCollect.CameraPreviewDialog)form).o_use = false;
  323. }
  324. }
  325. private void UpdateColorTemperature()
  326. {
  327. button2.Enabled = true;
  328. button3.Enabled = true;
  329. button4.Enabled = true;
  330. button5.Enabled = true;
  331. uint cct = 0;
  332. double redChannel = 0;
  333. double greenChannel = 0;
  334. double blueChannel = 0;
  335. m_camera.GetColorTemperature(ref redChannel, ref greenChannel, ref blueChannel, ref cct);
  336. m_cameraParamModel.parame.RedChannel = redChannel;
  337. m_cameraParamModel.parame.GreenChannel = greenChannel;
  338. m_cameraParamModel.parame.BlueChannel = blueChannel;
  339. // 颜色值
  340. this.redChannelTB.Value = (int)m_cameraParamModel.parame.RedChannel;
  341. this.greenChannelTB.Value = (int)m_cameraParamModel.parame.GreenChannel;
  342. this.blueChannelTB.Value = (int)m_cameraParamModel.parame.BlueChannel;
  343. //string colorTemperatureString = m_camera.GetColorTemperatureString(cct);
  344. this.redChannelTB.Enabled = false;
  345. this.greenChannelTB.Enabled = false;
  346. this.blueChannelTB.Enabled = false;
  347. if (m_cameraParamModel.parame.WhiteBalance == 1)
  348. {
  349. button3.Enabled = false;
  350. }
  351. else
  352. {
  353. switch (m_cameraParamModel.parame.FMExposure)
  354. {
  355. case 0:
  356. button2.Enabled = false;
  357. this.redChannelTB.Enabled = true;
  358. this.greenChannelTB.Enabled = true;
  359. this.blueChannelTB.Enabled = true;
  360. break;
  361. case 1:
  362. button4.Enabled = false;
  363. break;
  364. case 2:
  365. button5.Enabled = false;
  366. break;
  367. }
  368. }
  369. xianshiColourCheckBox.Focus();
  370. }
  371. /// <summary>
  372. /// 是否自动白平衡 修改显示样式
  373. /// </summary>
  374. /// <param name="s"></param>
  375. private void AutoWhiteBalance(Boolean isWhiteBalance)
  376. {
  377. if (isWhiteBalance)
  378. {
  379. this.redChannelTB.Enabled = false;
  380. this.greenChannelTB.Enabled = false;
  381. this.blueChannelTB.Enabled = false;
  382. m_cameraParamModel.parame.WhiteBalance = 1;
  383. if (m_immediately)
  384. {
  385. // 自动白平衡
  386. m_camera.SetWhiteBalanceMode(WhiteBalanceMode.AUTO);
  387. }
  388. }
  389. else
  390. {
  391. m_cameraParamModel.parame.WhiteBalance = 0;
  392. if (m_immediately)
  393. {
  394. // 手动白平衡
  395. m_camera.SetWhiteBalanceMode(WhiteBalanceMode.MANUAL);
  396. }
  397. }
  398. UpdateColorTemperature();
  399. }
  400. /// <summary>
  401. /// 饱和度滑块滑动
  402. /// </summary>
  403. /// <param name="sender"></param>
  404. /// <param name="e"></param>
  405. private void baoheduTBar_ValueChanged(object sender, System.EventArgs e)
  406. {
  407. this.m_cameraParamModel.parame.Saturation = this.baoheduTBar.Value;
  408. //this.baoheduTBox.Text = ((this.baoheduTBar.Value - 10) / 10.0).ToString("0.0");
  409. this.baoheduTBox.Text = this.baoheduTBar.Value.ToString();
  410. // 设置到相机
  411. if (m_immediately)
  412. {
  413. m_camera.SetSaturation(this.m_cameraParamModel.parame.Saturation); //usec
  414. }
  415. }
  416. /// <summary>
  417. /// 显示颜色通道值
  418. /// </summary>
  419. /// <param name="sender"></param>
  420. /// <param name="e"></param>
  421. private void xianshiColourCheckBox_CheckedChanged(object sender, EventArgs e)
  422. {
  423. CheckBox cb = (CheckBox)sender;
  424. this.yanghongsepictureBox.Visible = cb.Checked;
  425. this.yanghongsepictureBox.Visible = cb.Checked; ;
  426. this.lansepictureBox.Visible = cb.Checked;
  427. this.hongsepictureBox.Visible = cb.Checked;
  428. this.lansepictureBox.Visible = cb.Checked;
  429. this.huangsepictureBox.Visible = cb.Checked;
  430. this.lanlvpictureBox.Visible = cb.Checked;
  431. this.lvsepictureBox.Visible = cb.Checked;
  432. this.m_cameraParamModel.parame.ShowColorPBoxFlag = cb.Checked ? 1 : 0;
  433. }
  434. private void txtGain_KeyPress(object sender, KeyPressEventArgs e)
  435. {
  436. if (!char.IsDigit(e.KeyChar) && (e.KeyChar != (char)Keys.Enter) && (e.KeyChar != (char)Keys.Back)) // 非数字键, 放弃该输入
  437. {
  438. e.Handled = true;
  439. return;
  440. }
  441. if (e.KeyChar == (char)Keys.Enter)
  442. {
  443. try
  444. {
  445. int trbGainVal = Convert.ToInt32(txtGain.Text);
  446. if (trbGainVal < trbGain.Minimum)
  447. {
  448. trbGainVal = trbGain.Minimum;
  449. }
  450. if (trbGainVal > trbGain.Maximum)
  451. {
  452. trbGainVal = trbGain.Maximum;
  453. }
  454. trbGain.Value = trbGainVal;
  455. }
  456. catch (Exception ex)
  457. {
  458. MessageBox.Show(ex.Message);
  459. }
  460. }
  461. }
  462. private void redChannelTB_ValueChanged(object sender, EventArgs e)
  463. {
  464. Form form = Application.OpenForms["CameraPreviewDialog"];
  465. if (form != null)
  466. {
  467. ((ImageCollect.CameraPreviewDialog)form).m_use = false;
  468. ((ImageCollect.CameraPreviewDialog)form).o_use = false;
  469. }
  470. m_cameraParamModel.parame.RedChannel = ((TrackBar)sender).Value;
  471. // 设置到相机
  472. if (m_immediately)
  473. {
  474. m_camera.SetRedGain(m_cameraParamModel.parame.RedChannel); //usec
  475. }
  476. }
  477. private void greenChannelTB_Scroll(object sender, EventArgs e)
  478. {
  479. Form form = Application.OpenForms["CameraPreviewDialog"];
  480. if (form != null)
  481. {
  482. ((ImageCollect.CameraPreviewDialog)form).m_use = false;
  483. ((ImageCollect.CameraPreviewDialog)form).o_use = false;
  484. }
  485. m_cameraParamModel.parame.GreenChannel = ((TrackBar)sender).Value;
  486. // 设置到相机
  487. if (m_immediately)
  488. {
  489. m_camera.SetGreeGain(m_cameraParamModel.parame.GreenChannel); //usec
  490. }
  491. }
  492. private void blueChannelTB_ValueChanged(object sender, EventArgs e)
  493. {
  494. Form form = Application.OpenForms["CameraPreviewDialog"];
  495. if (form != null)
  496. {
  497. ((ImageCollect.CameraPreviewDialog)form).m_use = false;
  498. ((ImageCollect.CameraPreviewDialog)form).o_use = false;
  499. }
  500. m_cameraParamModel.parame.BlueChannel = ((TrackBar)sender).Value;
  501. // 设置到相机
  502. if (m_immediately)
  503. {
  504. m_camera.SetBlueGain(m_cameraParamModel.parame.BlueChannel); //usec
  505. }
  506. }
  507. private void trbGain_ValueChanged(object sender, EventArgs e)
  508. {
  509. txtGain.Text = trbGain.Value.ToString();
  510. m_cameraParamModel.parame.GlobalGain = trbGain.Value;
  511. // 非白平衡模式有效
  512. if (m_cameraParamModel.parame.WhiteBalance == 0)
  513. {
  514. // 设置到相机
  515. if (m_immediately)
  516. {
  517. m_camera.Gain = m_cameraParamModel.parame.GlobalGain; //usec
  518. }
  519. }
  520. }
  521. /// <summary>
  522. /// 白平衡区域选择
  523. /// </summary>
  524. /// <param name="sender"></param>
  525. /// <param name="e"></param>
  526. private void button7_Click(object sender, EventArgs e)
  527. {
  528. Form form = Application.OpenForms["CameraPreviewDialog"];
  529. if (form != null)
  530. {
  531. ((ImageCollect.CameraPreviewDialog)form).o_use = false;
  532. ((ImageCollect.CameraPreviewDialog)form).m_use = !((ImageCollect.CameraPreviewDialog)form).m_use;
  533. }
  534. }
  535. /// <summary>
  536. /// 白平衡原图取色
  537. /// </summary>
  538. /// <param name="sender"></param>
  539. /// <param name="e"></param>
  540. private void button6_Click(object sender, EventArgs e)
  541. {
  542. Form form = Application.OpenForms["CameraPreviewDialog"];
  543. if (form != null)
  544. {
  545. ((ImageCollect.CameraPreviewDialog)form).m_use = false;
  546. ((ImageCollect.CameraPreviewDialog)form).o_use = !((ImageCollect.CameraPreviewDialog)form).o_use;
  547. ((ImageCollect.CameraPreviewDialog)form).m_startP = new System.Drawing.Point(-1, -1);
  548. }
  549. }
  550. }
  551. }