|
|
@@ -11,7 +11,6 @@ using System.Collections;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Data;
|
|
|
using System.Drawing;
|
|
|
-using System.Drawing.Imaging;
|
|
|
using System.IO;
|
|
|
using System.Reflection;
|
|
|
using System.Windows.Forms;
|
|
|
@@ -131,7 +130,7 @@ namespace OTSMeasureApp
|
|
|
//显示灰度曲线图
|
|
|
GrayLevelChart = 2,
|
|
|
//线扫描曲线
|
|
|
- GrayLevelLine = 3,
|
|
|
+ GrayLevelLineScan = 3,
|
|
|
//显示去背景BSE图灰度曲线
|
|
|
GrayAbandonLevelChart = 4,
|
|
|
//
|
|
|
@@ -140,10 +139,10 @@ namespace OTSMeasureApp
|
|
|
//图bfResult
|
|
|
public static bool bfResult = false;
|
|
|
//当前是否显示线扫描
|
|
|
- public static bool IsShowGrayLevelLine = false;
|
|
|
+ //public static bool IsShowGrayLevelLine = false;
|
|
|
//当前默认值
|
|
|
ImageType m_imagetype = ImageType.BSEImage;
|
|
|
- ImageType m_IsShowImageType = ImageType.BSEImage;
|
|
|
+ //ImageType m_IsShowImageType = ImageType.BSEImage;
|
|
|
|
|
|
|
|
|
public OTSMeasureStatusWindow(OTSIncAMeasureAppForm MeasureApp)
|
|
|
@@ -159,6 +158,14 @@ namespace OTSMeasureApp
|
|
|
//国际化
|
|
|
lan = new OTSCommon.Language(this);
|
|
|
table = lan.GetNameTable(this.Name);
|
|
|
+ if (OTSCommon.Language.ReadDefaultLanguage() == "ZH")
|
|
|
+ {
|
|
|
+ contextMenuStrip1.Items[(int)MeasureStateMenuType.ChangeDiffImageShow].Text = "切换显示至BSE图";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ contextMenuStrip1.Items[(int)MeasureStateMenuType.ChangeDiffImageShow].Text = "SwitchDisplayToBSEDiagram";
|
|
|
+ }
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 在控件中显示BSE图像
|
|
|
@@ -166,12 +173,12 @@ namespace OTSMeasureApp
|
|
|
/// <param name="m_iWidth"></param>
|
|
|
/// <param name="m_iHeigh"></param>
|
|
|
/// <param name="bBseData"></param>
|
|
|
- public void ShowImage(int m_iWidth, int m_iHeigh, byte[] bBseData)
|
|
|
+ public void ShowImage(int iWidth, int iHeight, byte[] bBseData)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- Bitmap bitmap = CImageHandler.ToGrayBitmap(bBseData, m_iWidth, m_iHeigh);
|
|
|
- ShowBitmap(m_iWidth, m_iHeigh, bitmap);
|
|
|
+ Bitmap bitmap = CImageHandler.ToGrayBitmap(bBseData, iWidth, iHeight);
|
|
|
+ ShowBitmapInPicbox1(bitmap);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
@@ -180,11 +187,12 @@ namespace OTSMeasureApp
|
|
|
|
|
|
|
|
|
}
|
|
|
- public void ShowBitmap(int m_iWidth, int m_iHeigh, Bitmap coloredImage)
|
|
|
+
|
|
|
+ public void ShowBitmapInPicbox1(Bitmap bmpImage)
|
|
|
{
|
|
|
|
|
|
|
|
|
- picBox.Image = coloredImage;
|
|
|
+ picBox.Image = bmpImage;
|
|
|
//设置Pictrue显示位置
|
|
|
picBox.Height = this.RestoreBounds.Height;
|
|
|
picBox.Width = this.RestoreBounds.Height * 4 / 3;
|
|
|
@@ -199,6 +207,44 @@ namespace OTSMeasureApp
|
|
|
picBox.Top = 0;
|
|
|
picBox.Show();
|
|
|
|
|
|
+ pictureBox2.Visible = false;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ public void ShowDoubleImage(Bitmap image1, Bitmap image2)
|
|
|
+ {
|
|
|
+
|
|
|
+ if (image1 != null)
|
|
|
+ {
|
|
|
+ picBox.Image = image1;
|
|
|
+ }
|
|
|
+
|
|
|
+ //设置Pictrue显示位置
|
|
|
+ picBox.Height = this.RestoreBounds.Height;
|
|
|
+ picBox.Width = this.RestoreBounds.Height * 2 / 3;
|
|
|
+ //获取黄线坐标位置
|
|
|
+ Rectangle rectangle = GetPictureBoxZoomSize(picBox);
|
|
|
+ m_GetBSEImageInitPoint = rectangle.Location;
|
|
|
+ pointStart.X = rectangle.X;
|
|
|
+ pointEnd.X = rectangle.X + rectangle.Width;
|
|
|
+ pointStart.Y = rectangle.Y + (rectangle.Height) / 2;
|
|
|
+ pointEnd.Y = rectangle.Y + (rectangle.Height) / 2;
|
|
|
+ picBox.Left = 0;
|
|
|
+ picBox.Top = 0;
|
|
|
+ picBox.Show();
|
|
|
+ if (image2 != null)
|
|
|
+ {
|
|
|
+ pictureBox2.Image = image2;
|
|
|
+ }
|
|
|
+
|
|
|
+ pictureBox2.Height = this.RestoreBounds.Height;
|
|
|
+ pictureBox2.Width = this.RestoreBounds.Height * 2 / 3;
|
|
|
+ pictureBox2.Left = this.RestoreBounds.Width / 2;
|
|
|
+ pictureBox2.Top = 0;
|
|
|
+ pictureBox2.Show();
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -264,7 +310,7 @@ namespace OTSMeasureApp
|
|
|
}
|
|
|
//设置右键菜单中的项 是否可编辑
|
|
|
SetContextMenuEnabled(true);
|
|
|
- bool rst= AcquireBSEImage();
|
|
|
+ bool rst = AcquireBSEImage();
|
|
|
|
|
|
//取图不成功就返回
|
|
|
if (rst)
|
|
|
@@ -287,13 +333,11 @@ namespace OTSMeasureApp
|
|
|
//显示单点扫描元素信息菜单
|
|
|
contextMenuStrip1.Items[(int)MeasureStateMenuType.PointScanElementMenuItem].Enabled = true;
|
|
|
}
|
|
|
- m_IsShowImageType = ImageType.BSEImage;
|
|
|
+ //m_IsShowImageType = ImageType.BSEImage;
|
|
|
m_imagetype = ImageType.BSEImage;
|
|
|
-
|
|
|
- ShowImage(m_iWidth, m_iHeight, originalBseData);
|
|
|
+ Bitmap bitmap = CImageHandler.ToGrayBitmap(originalBseData, m_iWidth, m_iHeight);
|
|
|
+ ShowBitmapInPicbox1(bitmap);
|
|
|
|
|
|
- IsShowGrayLevelLine = false;
|
|
|
- //获取默认Y轴
|
|
|
|
|
|
|
|
|
myChart.Visible = false;
|
|
|
@@ -357,13 +401,15 @@ namespace OTSMeasureApp
|
|
|
|
|
|
|
|
|
return rst;
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
|
|
|
}
|
|
|
private void UpdateImageAndLineScanChart()
|
|
|
{
|
|
|
- ShowImage(m_iWidth, m_iHeight, originalBseData);
|
|
|
+ Bitmap bitmap = CImageHandler.ToGrayBitmap(originalBseData, m_iWidth, m_iHeight);
|
|
|
+ ShowBitmapInPicbox1(bitmap);
|
|
|
+
|
|
|
//获取灰度图数据
|
|
|
dGrayLevelData = new double[(int)GrayLevel.Max];
|
|
|
dGrayLevelData = GetGaryData(originalBseData, dGrayLevelData);
|
|
|
@@ -384,9 +430,9 @@ namespace OTSMeasureApp
|
|
|
{
|
|
|
YData[i] = (int)dGrayLevelData[i];
|
|
|
}
|
|
|
- chartData(XData, YData);
|
|
|
+ DisChartData(XData, YData, ImageType.GrayLevelLineScan);
|
|
|
picBox.Refresh();
|
|
|
-
|
|
|
+
|
|
|
|
|
|
}
|
|
|
public double[] GetGaryData(byte[] Imagedata, double[] GrayLevelData)
|
|
|
@@ -411,7 +457,7 @@ namespace OTSMeasureApp
|
|
|
IScanController cfun = ScanController.GetScanController();
|
|
|
ISemController sem = SemController.GetSEMController();
|
|
|
|
|
|
- //int GetImgCount = 0;
|
|
|
+
|
|
|
try
|
|
|
{
|
|
|
//连接电镜
|
|
|
@@ -445,7 +491,7 @@ namespace OTSMeasureApp
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
//显示去背景图 = AUTO
|
|
|
@@ -454,6 +500,7 @@ namespace OTSMeasureApp
|
|
|
{
|
|
|
//设置右键菜单中的项 是否可编辑
|
|
|
SetContextMenuEnabled(true);
|
|
|
+ m_imagetype = ImageType.RemoveBGImage;
|
|
|
ShowRemoveBGImage();
|
|
|
m_CurrentMultiple = 0;
|
|
|
panelXray.Visible = false;
|
|
|
@@ -478,18 +525,9 @@ namespace OTSMeasureApp
|
|
|
var imageHandle = new CImageHandler();
|
|
|
|
|
|
bfResult = imageHandle.GetBSEImage(imageProcessParam, pixelSize, originalBseData, m_iWidth, m_iHeight, ref removeBGBseData);
|
|
|
- m_IsShowImageType = ImageType.RemoveBGImage;
|
|
|
|
|
|
- //获取去背景灰度图数据
|
|
|
- dGrayAbandonLevelData = new double[(int)GrayLevel.Max];
|
|
|
- dGrayAbandonLevelData = GetGrayAbandonData(removeBGBseData, dGrayAbandonLevelData);
|
|
|
|
|
|
- //计算灰度去背景最大值
|
|
|
- dGrayAbandonLevelMax = dGrayAbandonLevelData[0];
|
|
|
- for (int i = 1; i < (int)GrayLevel.Max; i++)
|
|
|
- {
|
|
|
- dGrayAbandonLevelMax = Math.Max(dGrayAbandonLevelMax, dGrayAbandonLevelData[i]);
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
@@ -499,11 +537,10 @@ namespace OTSMeasureApp
|
|
|
|
|
|
|
|
|
|
|
|
+ Bitmap bitmap = CImageHandler.ToGrayBitmap(removeBGBseData, m_iWidth, m_iHeight);
|
|
|
+ ShowDoubleImage((Bitmap)picBox.Image, bitmap);
|
|
|
|
|
|
-
|
|
|
- ShowImage(m_iWidth, m_iHeight, removeBGBseData);
|
|
|
-
|
|
|
- IsShowGrayLevelLine = false;
|
|
|
+
|
|
|
|
|
|
myChart.Visible = false;
|
|
|
|
|
|
@@ -555,23 +592,16 @@ namespace OTSMeasureApp
|
|
|
|
|
|
|
|
|
|
|
|
- ShowBitmap(m_iWidth, m_iHeight, coloredParticleImage);
|
|
|
+ ShowDoubleImage((Bitmap)picBox.Image, coloredParticleImage);
|
|
|
|
|
|
- IsShowGrayLevelLine = false;
|
|
|
+
|
|
|
|
|
|
|
|
|
myChart.Visible = false;
|
|
|
picBox.Show();
|
|
|
//切换显示至BSE图
|
|
|
contextMenuStrip1.Items[(int)MeasureStateMenuType.ChangeDiffImageShow].Enabled = true;
|
|
|
- if (OTSCommon.Language.ReadDefaultLanguage() == "ZH")
|
|
|
- {
|
|
|
- contextMenuStrip1.Items[(int)MeasureStateMenuType.ChangeDiffImageShow].Text = "切换显示至BSE图";
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- contextMenuStrip1.Items[(int)MeasureStateMenuType.ChangeDiffImageShow].Text = "SwitchDisplayToBSEDiagram";
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -583,29 +613,19 @@ namespace OTSMeasureApp
|
|
|
//设置右键菜单中的项 是否可编辑
|
|
|
SetContextMenuEnabled(false);
|
|
|
ShowGrayLevelImage();
|
|
|
- myChart.Visible = true;
|
|
|
- panelXray.Visible = false;
|
|
|
- IsShowGrayLevelLine = false;
|
|
|
+
|
|
|
}
|
|
|
protected void ShowGrayLevelImage()
|
|
|
{
|
|
|
|
|
|
- m_imagetype = ImageType.GrayLevelChart;
|
|
|
-
|
|
|
- picBox.Hide();
|
|
|
|
|
|
//切换显示至BSE图
|
|
|
contextMenuStrip1.Items[(int)MeasureStateMenuType.ChangeDiffImageShow].Enabled = true;
|
|
|
contextMenuStrip1.Items[(int)MeasureStateMenuType.ChangeDiffImageShow].Enabled = true;
|
|
|
- if (OTSCommon.Language.ReadDefaultLanguage() == "ZH")
|
|
|
- {
|
|
|
- contextMenuStrip1.Items[(int)MeasureStateMenuType.ChangeDiffImageShow].Text = "切换显示至BSE图";
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- contextMenuStrip1.Items[(int)MeasureStateMenuType.ChangeDiffImageShow].Text = "SwitchDisplayToBSEDiagram";
|
|
|
- }
|
|
|
-
|
|
|
+
|
|
|
+ //获取灰度图数据
|
|
|
+ dGrayLevelData = new double[(int)GrayLevel.Max];
|
|
|
+ dGrayLevelData = GetGaryData(originalBseData, dGrayLevelData);
|
|
|
|
|
|
int[] XData = new int[(int)GrayLevel.Max];
|
|
|
for (int i = 0; i < (int)GrayLevel.Max; i++)
|
|
|
@@ -617,7 +637,7 @@ namespace OTSMeasureApp
|
|
|
{
|
|
|
YData[i] = (int)dGrayLevelData[i];
|
|
|
}
|
|
|
- chartData(XData, YData);
|
|
|
+ DisChartData(XData, YData, ImageType.GrayLevelChart);
|
|
|
|
|
|
|
|
|
|
|
|
@@ -628,25 +648,17 @@ namespace OTSMeasureApp
|
|
|
#region 显示线扫描曲线
|
|
|
private void ShowLineScanChart_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
+ ShowBitmapInPicbox1((Bitmap)picBox.Image);
|
|
|
if (MenuItemLineScan.Checked)
|
|
|
{
|
|
|
- IsShowGrayLevelLine = true;
|
|
|
+ m_imagetype = ImageType.GrayLevelLineScan;
|
|
|
+ timer1.Enabled = true;
|
|
|
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- IsShowGrayLevelLine = false;
|
|
|
- }
|
|
|
|
|
|
- panelXray.Visible = false;
|
|
|
-
|
|
|
- picBox.Refresh();
|
|
|
- if (IsShowGrayLevelLine)
|
|
|
- {
|
|
|
- timer1.Enabled = true;
|
|
|
- }
|
|
|
- else
|
|
|
+ else
|
|
|
{
|
|
|
+ m_imagetype = ImageType.BSEImage;
|
|
|
timer1.Enabled = false;
|
|
|
}
|
|
|
|
|
|
@@ -709,7 +721,7 @@ namespace OTSMeasureApp
|
|
|
{
|
|
|
if (e.Button != MouseButtons.Right)
|
|
|
{
|
|
|
- if (!IsShowGrayLevelLine)
|
|
|
+ if (m_imagetype != ImageType.GrayLevelLineScan)
|
|
|
{
|
|
|
if (m_ElementPointGDIObjects != null)
|
|
|
{
|
|
|
@@ -754,7 +766,7 @@ namespace OTSMeasureApp
|
|
|
PointScanElementMenuItem.Enabled = isEnabled;
|
|
|
bool showExprot = m_ElementPointGDIObjects.Count > 0 ? true : false;
|
|
|
ExportScanInfoMenuItem.Enabled = showExprot;
|
|
|
- IsShowGrayLevelLine = false;
|
|
|
+ //IsShowGrayLevelLine = false;
|
|
|
VisualAdjustingMenu.Enabled = isEnabled;
|
|
|
toolStripMenuItem1.Enabled = true;
|
|
|
this.Cursor = Cursors.Default;
|
|
|
@@ -769,14 +781,14 @@ namespace OTSMeasureApp
|
|
|
|
|
|
|
|
|
Stream stream = null;
|
|
|
- if (m_IsShowImageType == ImageType.BSEImage)
|
|
|
- {
|
|
|
- stream = new MemoryStream(originalBseData);
|
|
|
- }
|
|
|
- else if (m_IsShowImageType == ImageType.RemoveBGImage)
|
|
|
- {
|
|
|
- stream = new MemoryStream(removeBGBseData);
|
|
|
- }
|
|
|
+ //if (m_imagetype == ImageType.BSEImage)
|
|
|
+ //{
|
|
|
+ stream = new MemoryStream(originalBseData);
|
|
|
+ //}
|
|
|
+ //else if (m_imagetype == ImageType.RemoveBGImage)
|
|
|
+ //{
|
|
|
+ // stream = new MemoryStream(removeBGBseData);
|
|
|
+ //}
|
|
|
if (iHeight >= 0)
|
|
|
{
|
|
|
stream.Seek(iHeight * iWidth, SeekOrigin.Begin);
|
|
|
@@ -876,66 +888,67 @@ namespace OTSMeasureApp
|
|
|
{
|
|
|
|
|
|
|
|
|
- if (bfResult)
|
|
|
+ if (!bfResult)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (m_imagetype == ImageType.GrayLevelLineScan)
|
|
|
{
|
|
|
- if (IsShowGrayLevelLine)
|
|
|
- {
|
|
|
|
|
|
- Rectangle rectangle = GetPictureBoxZoomSize(picBox);
|
|
|
- if (pointStart.Equals(pointEnd))
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
- Point start = new Point(100, pointStart.Y);
|
|
|
- Point end = new Point(500, pointEnd.Y);
|
|
|
+ Rectangle rectangle = GetPictureBoxZoomSize(picBox);
|
|
|
+ if (pointStart.Equals(pointEnd))
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Point start = new Point(100, pointStart.Y);
|
|
|
+ Point end = new Point(500, pointEnd.Y);
|
|
|
|
|
|
- double rate = (double)picBox.Image.Height / (double)rectangle.Height;
|
|
|
- int YSize = Convert.ToInt32((rate * (double)pointStart.Y));
|
|
|
- //显示线扫描 黄色线的曲线数据
|
|
|
+ double rate = (double)picBox.Image.Height / (double)rectangle.Height;
|
|
|
+ int YSize = Convert.ToInt32((rate * (double)pointStart.Y));
|
|
|
+ //显示线扫描 黄色线的曲线数据
|
|
|
|
|
|
- var Imagedata = new byte[m_iWidth];
|
|
|
- GetYSize();
|
|
|
+ var Imagedata = new byte[m_iWidth];
|
|
|
+
|
|
|
+ YSize = Convert.ToInt32((rate * (double)pointStart.Y));
|
|
|
|
|
|
- GetLineImage(YSize, m_iWidth, ref Imagedata);
|
|
|
+ GetLineImage(YSize, m_iWidth, ref Imagedata);
|
|
|
|
|
|
|
|
|
|
|
|
- DrawCurve(Imagedata, e);
|
|
|
+ DrawCurve(Imagedata, e);
|
|
|
|
|
|
- e.Graphics.DrawLine(new Pen(Color.Red), new Point(rectangle.X, rectangle.Y + (rectangle.Height) / 4), new Point(rectangle.X + rectangle.Width, rectangle.Y + (rectangle.Height) / 4));
|
|
|
- e.Graphics.DrawLine(new Pen(Color.Red), new Point(rectangle.X, rectangle.Y + rectangle.Height * 3 / 4), new Point(rectangle.X + rectangle.Width, rectangle.Y + rectangle.Height * 3 / 4));
|
|
|
- e.Graphics.DrawLine(new Pen(Color.Blue), new Point(rectangle.X, pointStart.Y), new Point(rectangle.X + rectangle.Width, pointEnd.Y));
|
|
|
+ e.Graphics.DrawLine(new Pen(Color.Red), new Point(rectangle.X, rectangle.Y + (rectangle.Height) / 4), new Point(rectangle.X + rectangle.Width, rectangle.Y + (rectangle.Height) / 4));
|
|
|
+ e.Graphics.DrawLine(new Pen(Color.Red), new Point(rectangle.X, rectangle.Y + rectangle.Height * 3 / 4), new Point(rectangle.X + rectangle.Width, rectangle.Y + rectangle.Height * 3 / 4));
|
|
|
+ e.Graphics.DrawLine(new Pen(Color.Blue), new Point(rectangle.X, pointStart.Y), new Point(rectangle.X + rectangle.Width, pointEnd.Y));
|
|
|
|
|
|
- #region 绘制刻度条
|
|
|
- float offHeight = (rectangle.Y + (rectangle.Height) / 4) - (rectangle.Y + rectangle.Height * 3 / 4);
|
|
|
- float grayValue = Math.Abs(offHeight / 255);
|
|
|
- //设置文字对齐方式
|
|
|
- StringFormat sf = new StringFormat();
|
|
|
- sf.Alignment = StringAlignment.Center;
|
|
|
- sf.LineAlignment = StringAlignment.Center;
|
|
|
- SolidBrush solidBrush = new SolidBrush(Color.FromArgb(100, Color.Red));
|
|
|
- //字体大小 根据样品孔Rectangle大小
|
|
|
- float fontSize = 15;
|
|
|
- Font font = new Font("黑体", fontSize, FontStyle.Bold);
|
|
|
+ #region 绘制刻度条
|
|
|
+ float offHeight = (rectangle.Y + (rectangle.Height) / 4) - (rectangle.Y + rectangle.Height * 3 / 4);
|
|
|
+ float grayValue = Math.Abs(offHeight / 255);
|
|
|
+ //设置文字对齐方式
|
|
|
+ StringFormat sf = new StringFormat();
|
|
|
+ sf.Alignment = StringAlignment.Center;
|
|
|
+ sf.LineAlignment = StringAlignment.Center;
|
|
|
+ SolidBrush solidBrush = new SolidBrush(Color.FromArgb(100, Color.Red));
|
|
|
+ //字体大小 根据样品孔Rectangle大小
|
|
|
+ float fontSize = 15;
|
|
|
+ Font font = new Font("黑体", fontSize, FontStyle.Bold);
|
|
|
|
|
|
- Pen pen = new Pen(Color.Red, 1);
|
|
|
- pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Custom;
|
|
|
- pen.DashPattern = new float[] { 5, 5 };
|
|
|
- int fontOffWidth = 50;
|
|
|
- int fontOffHeight = 10;
|
|
|
+ Pen pen = new Pen(Color.Red, 1);
|
|
|
+ pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Custom;
|
|
|
+ pen.DashPattern = new float[] { 5, 5 };
|
|
|
+ int fontOffWidth = 50;
|
|
|
+ int fontOffHeight = 10;
|
|
|
|
|
|
- int scaleLine = 0;
|
|
|
- for (int i = 25; i <= 225; i += 25)
|
|
|
- {
|
|
|
- scaleLine = (int)(grayValue * i);
|
|
|
- e.Graphics.DrawLine(pen, new Point(rectangle.X, (rectangle.Y + rectangle.Height * 3 / 4) - scaleLine), new Point(rectangle.X + fontOffWidth, (rectangle.Y + rectangle.Height * 3 / 4) - scaleLine));
|
|
|
- e.Graphics.DrawString(i.ToString(), font, solidBrush, rectangle.X + 20, (rectangle.Y + rectangle.Height * 3 / 4) - scaleLine - fontOffHeight, sf);
|
|
|
- }
|
|
|
- #endregion
|
|
|
+ int scaleLine = 0;
|
|
|
+ for (int i = 25; i <= 225; i += 25)
|
|
|
+ {
|
|
|
+ scaleLine = (int)(grayValue * i);
|
|
|
+ e.Graphics.DrawLine(pen, new Point(rectangle.X, (rectangle.Y + rectangle.Height * 3 / 4) - scaleLine), new Point(rectangle.X + fontOffWidth, (rectangle.Y + rectangle.Height * 3 / 4) - scaleLine));
|
|
|
+ e.Graphics.DrawString(i.ToString(), font, solidBrush, rectangle.X + 20, (rectangle.Y + rectangle.Height * 3 / 4) - scaleLine - fontOffHeight, sf);
|
|
|
}
|
|
|
-
|
|
|
+ #endregion
|
|
|
}
|
|
|
- if (!MenuItemLineScan.Checked)
|
|
|
+ else
|
|
|
{
|
|
|
if (m_ElementPointGDIObjects != null)
|
|
|
{
|
|
|
@@ -1011,25 +1024,15 @@ namespace OTSMeasureApp
|
|
|
if (imageY > 1)
|
|
|
{
|
|
|
startimageX = startimageX + (startimageY * m_iWidth);
|
|
|
- if (m_IsShowImageType == ImageType.BSEImage)
|
|
|
- {
|
|
|
- grayValue = originalBseData[startimageX];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- grayValue = removeBGBseData[startimageX];
|
|
|
- }
|
|
|
+
|
|
|
+ grayValue = originalBseData[startimageX];
|
|
|
+
|
|
|
}
|
|
|
else if (startimageY == 1)
|
|
|
{
|
|
|
- if (m_IsShowImageType == ImageType.BSEImage)
|
|
|
- {
|
|
|
- grayValue = originalBseData[startimageX];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- grayValue = removeBGBseData[startimageX];
|
|
|
- }
|
|
|
+
|
|
|
+ grayValue = originalBseData[startimageX];
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
@@ -1070,7 +1073,7 @@ namespace OTSMeasureApp
|
|
|
}
|
|
|
//此处调接口显示灰度值
|
|
|
m_MeasureAppForm.ShowGrayVal(strGrayValue.ToString());
|
|
|
- if (!IsShowGrayLevelLine)
|
|
|
+ if (m_imagetype != ImageType.GrayLevelLineScan)
|
|
|
{
|
|
|
if (m_ElementPointGDIObjects != null)
|
|
|
{
|
|
|
@@ -1122,9 +1125,7 @@ namespace OTSMeasureApp
|
|
|
//设置右键菜单中的项 是否可编辑
|
|
|
SetContextMenuEnabled(false);
|
|
|
ShowAbandonGrayLevelImage();
|
|
|
- myChart.Visible = true;
|
|
|
- panelXray.Visible = false;
|
|
|
- IsShowGrayLevelLine = false;
|
|
|
+
|
|
|
}
|
|
|
private double[] GetGrayAbandonData(byte[] Imagedata, double[] GrayAbandonLevelData)
|
|
|
{
|
|
|
@@ -1150,7 +1151,11 @@ namespace OTSMeasureApp
|
|
|
|
|
|
|
|
|
var imageHandle = new CImageHandler();
|
|
|
- bfResult = imageHandle.GetBSEImage(WSample.GetMsrParams().GetImageProcessParam(), pixelSize, originalBseData, m_iWidth, m_iHeight, ref removeBGBseData);
|
|
|
+ if (removeBGBseData == null)
|
|
|
+ {
|
|
|
+ bfResult = imageHandle.GetBSEImage(WSample.GetMsrParams().GetImageProcessParam(), pixelSize, originalBseData, m_iWidth, m_iHeight, ref removeBGBseData);
|
|
|
+ }
|
|
|
+
|
|
|
if (bfResult)
|
|
|
{
|
|
|
dGrayAbandonLevelData = new double[(int)GrayLevel.Max];
|
|
|
@@ -1165,7 +1170,7 @@ namespace OTSMeasureApp
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- picBox.Hide();
|
|
|
+ //picBox.Hide();
|
|
|
|
|
|
|
|
|
int[] XData = new int[(int)GrayLevel.Max];
|
|
|
@@ -1178,7 +1183,7 @@ namespace OTSMeasureApp
|
|
|
{
|
|
|
YData[i] = (int)dGrayAbandonLevelData[i];
|
|
|
}
|
|
|
- chartData(XData, YData);
|
|
|
+ DisChartData(XData, YData, ImageType.GrayAbandonLevelChart);
|
|
|
|
|
|
|
|
|
}
|
|
|
@@ -1215,11 +1220,13 @@ namespace OTSMeasureApp
|
|
|
if (originalBseData != null)
|
|
|
{
|
|
|
//用于线扫描曲线
|
|
|
- m_IsShowImageType = ImageType.BSEImage;
|
|
|
+
|
|
|
m_imagetype = ImageType.BSEImage;
|
|
|
//在控件中显示图像
|
|
|
- ShowImage(m_iWidth, m_iHeight, originalBseData);
|
|
|
- picBox.Show();
|
|
|
+ Bitmap bitmap = CImageHandler.ToGrayBitmap(originalBseData, m_iWidth, m_iHeight);
|
|
|
+ ShowBitmapInPicbox1(bitmap);
|
|
|
+
|
|
|
+
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -1395,17 +1402,11 @@ namespace OTSMeasureApp
|
|
|
|
|
|
}
|
|
|
#endregion
|
|
|
- #region 获取线扫描初始位置
|
|
|
- public void GetYSize()
|
|
|
- {
|
|
|
- Rectangle rectangle = GetPictureBoxZoomSize(picBox);
|
|
|
- double rate = (double)picBox.Image.Height / (double)rectangle.Height;
|
|
|
- YSize = Convert.ToInt32((rate * (double)pointStart.Y));
|
|
|
- }
|
|
|
- #endregion
|
|
|
|
|
|
- public void chartData(int[] XData, int[] YData)
|
|
|
+
|
|
|
+ public void DisChartData(int[] XData, int[] YData, ImageType imgtype)
|
|
|
{
|
|
|
+ m_imagetype = imgtype;
|
|
|
//添加数据
|
|
|
myChart.Series[0].Points.DataBindXY(XData, YData);
|
|
|
myChart.Series[0].Label = "";
|
|
|
@@ -1414,22 +1415,35 @@ namespace OTSMeasureApp
|
|
|
myChart.Series[0].Name = "Graph";
|
|
|
|
|
|
myChart.Series[0].IsVisibleInLegend = false;
|
|
|
- switch (m_imagetype)
|
|
|
+ switch (imgtype)
|
|
|
{
|
|
|
case ImageType.GrayLevelChart:
|
|
|
|
|
|
myChart.Titles[0].Text = "B-GrayCurve";
|
|
|
-
|
|
|
+ picBox.Hide();
|
|
|
+ pictureBox2.Hide();
|
|
|
+ myChart.Visible = true;
|
|
|
break;
|
|
|
case ImageType.GrayAbandonLevelChart:
|
|
|
|
|
|
myChart.Titles[0].Text = "Remove Background Gray-scaleCurve";
|
|
|
+ picBox.Hide();
|
|
|
+ pictureBox2.Hide();
|
|
|
+ myChart.Visible = true;
|
|
|
+ break;
|
|
|
+ case ImageType.GrayLevelLineScan:
|
|
|
|
|
|
+ pictureBox2.Hide();
|
|
|
+ myChart.Visible = true;
|
|
|
break;
|
|
|
default:
|
|
|
myChart.Titles[0].Text = "";
|
|
|
break;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ panelXray.Visible = false;
|
|
|
}
|
|
|
|
|
|
private void PointScanElementMenuItem_Click(object sender, EventArgs e)
|
|
|
@@ -1785,6 +1799,10 @@ namespace OTSMeasureApp
|
|
|
//在picturebox鼠标缩放
|
|
|
private void pbBSEImage_MouseWheel(object sender, MouseEventArgs e)
|
|
|
{
|
|
|
+ if (m_imagetype != ImageType.BSEImage)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
//鼠标滚动缩放 BSE图
|
|
|
if (e.Delta > 0)
|
|
|
{
|
|
|
@@ -1850,7 +1868,7 @@ namespace OTSMeasureApp
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
private void OTSMeasureStatusWindow_MouseClick(object sender, MouseEventArgs e)
|
|
|
{
|
|
|
@@ -1946,6 +1964,7 @@ namespace OTSMeasureApp
|
|
|
{
|
|
|
//设置右键菜单中的项 是否可编辑
|
|
|
SetContextMenuEnabled(true);
|
|
|
+ m_imagetype = ImageType.RemoveBGImage;
|
|
|
ShowColoredRemoveBGImage();
|
|
|
m_CurrentMultiple = 0;
|
|
|
panelXray.Visible = false;
|
|
|
@@ -1953,30 +1972,34 @@ namespace OTSMeasureApp
|
|
|
|
|
|
private void timer1_Tick(object sender, EventArgs e)
|
|
|
{
|
|
|
- log.Info("begin to acquire image");
|
|
|
- bool rst = AcquireBSEImage();
|
|
|
- if (rst)
|
|
|
+
|
|
|
+ if (!backgroundWorker1.IsBusy)
|
|
|
{
|
|
|
backgroundWorker1.RunWorkerAsync();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
|
|
|
{
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
|
|
|
//更新当前的图
|
|
|
+ log.Info("begin to acquire image");
|
|
|
|
|
|
+ bool rst = AcquireBSEImage();
|
|
|
+ if (m_imagetype == ImageType.GrayLevelLineScan)
|
|
|
+ {
|
|
|
log.Info("begin to show image");
|
|
|
UpdateImageAndLineScanChart();
|
|
|
-
|
|
|
+ }
|
|
|
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|