private void image_MouseLeftButtonDown(object sender, PointerRoutedEventArgs e) { lChartPhoto1.getDrawObjectCanvas().PointerMoved -= (image_MouseMove); lChartPhoto1.getDrawObjectCanvas().PointerPressed -= (image_MouseLeftButtonDown); Select.Foreground = Disactive; WriteableBitmap b = lChartPhoto1.Photo; if (b == null) { return; } int p = Convert.ToInt32(e.GetCurrentPoint(lChartPhoto1).Position.X / lChartPhoto1.ActualWidth * (b).PixelWidth); DrawGraphic dg = new DrawGraphic(canvasBright); ISO12233ExChart isoc = new ISO12233ExChart(); canvasBright.Children.Clear(); List <int> al = isoc.getImageGrayVLine(b, p); dg.DrawBrightLines(al); if (!lChartPhoto1.getDrawObjectCanvas().Children.Contains(Selectl)) { lChartPhoto1.getDrawObjectCanvas().Children.Add(Selectl); Selectl.Fill = new SolidColorBrush(Colors.Green); Selectl.StrokeThickness = 3; Selectl.Stroke = Selectl.Fill; } PhotoTestParameter ptp = new PhotoTestParameter(); textBlockCurrentPercent.Text = ptp.getContrast(al).ToString(); }
public void DrawMTFCurve(WriteableBitmap b, string ChartType)//绘制MTF的分析图 { this.ChartType = ChartType; List <double> al = new List <double>(); if (ChartType == "XMark") { XMarkChart xm = new XMarkChart(b); al = xm.getCurveMTF(); } if (ChartType == "ISO12233") { ISO12233ExChart x = new ISO12233ExChart(b); al = x.getCurveMTF(); } DrawGraphic dg = new DrawGraphic(DrawCanvas); //dg.InitCanvas(picCanvas.Width, picCanvas.Height);//需要先设置画布 dg.DrawX(); dg.DrawY(); List <double> dlist = new List <double>(); dlist.Add(0.0); dlist.Add(0.5); dlist.Add(1.0); dg.DrawYMark(dlist); dg.DrawXMark(dlist); dg.DrawTitle("MTF 曲线图"); dg.DrawLines(al); //dg.DrawCurve(al); //picCanvas.Image = dg.Canvas; }
List <Result> TestISO12233Ex(WriteableBitmap chart) { var rl = new List <Result>(); var Chart = new ISO12233ExChart(); rl.Add(new Result() { Value = Chart.getLPResoveLines(), Name = "Resolution", Memo = "", TestTime = DateTime.Now, TestCount = 1, Dimension = "LW/PH" }); rl.Add(new Result() { Value = Chart.getHEdgeResoveLines(), Name = "Horizontal Resolution", Memo = "", TestTime = DateTime.Now, TestCount = 1, Dimension = "LW/PH" }); rl.Add(new Result() { Value = Chart.getVEdgeResoveLines(), Name = "Vertical Resolution", Memo = "", TestTime = DateTime.Now, TestCount = 1, Dimension = "LW/PH" }); rl.Add(new Result() { Value = Chart.getHDispersiveness(), Name = "Horizontal Dispersiveness", Memo = "", TestTime = DateTime.Now, TestCount = 1, Dimension = "Pix" }); rl.Add(new Result() { Value = Chart.getVDispersiveness(), Name = "Vertical Dispersiveness", Memo = "", TestTime = DateTime.Now, TestCount = 1, Dimension = "Pix" }); return(rl); }
public void DrawDispersivenessCurve(WriteableBitmap b, string ChartType)//绘制色散分析图 { this.ChartType = ChartType; List <List <int> > al = new List <List <int> >(); WriteableBitmap subB; if (ChartType == "XMark") { XMarkChart x = new XMarkChart(b); subB = x.getAreaHEdge(); PhotoTestParameter xm = new PhotoTestParameter(); al = xm.getCurveVDispersiveness(subB); } if (ChartType == "ISO12233") { ISO12233ExChart x = new ISO12233ExChart(b); subB = x.getAreaHEdge(); PhotoTestParameter xm = new PhotoTestParameter(); al = xm.getCurveHDispersiveness(b); } DrawGraphic dg = new DrawGraphic(DrawCanvas); dg.DrawX(); List <double> MarkList = new List <double>(); for (int i = 0; i < 101; i = i + 20) { MarkList.Add(i); } dg.DrawXMark(MarkList); MarkList.Clear(); for (int i = 0; i < 255; i = i + 40) { MarkList.Add(i); } dg.DrawY(); dg.DrawYMark(MarkList); List <double> ral, gal, bal; ral = SilverlightLFC.common.Environment.getDoubleList <int>(al[0]); gal = SilverlightLFC.common.Environment.getDoubleList <int>(al[1]); bal = SilverlightLFC.common.Environment.getDoubleList <int>(al[2]); dg.ForeColor = Colors.Blue; dg.DrawLines(bal); dg.ForeColor = Colors.Red; dg.DrawLines(ral); dg.ForeColor = Colors.Green; dg.DrawLines(gal); dg.DrawTitle("色散"); }
public void ISO12233ExTest() { processbar.Value = 0; ResultPanel.Children.Clear(); Button li; ISO12233ExChart ISOChart = new ISO12233ExChart(SourcePhoto); ISOChart.CorrectChart(); ISOChart.BeginAnalyse(); processbar.Value = 30; sw.Stop(); sw.Start(); long r = ISOChart.getLPResoveLines(); li = new Button(); li.Name = "ResolvingPower"; li.Content = "分辨率(中央):" + r.ToString() + " LW/PH"; li.SetValue(ToolTipService.ToolTipProperty, "利用瑞利判据,直观判断相机分辨率,数据表示在一张照片里面可以分辨的垂直线条的数量"); li.Click += new RoutedEventHandler(ISO12233MTF_Click); ResultPanel.Children.Add(li); processbar.Value = 50; r = ISOChart.getHEdgeResoveLines(); li = new Button(); li.Name = "HResolvingPower"; li.Content = "分辨率(水平线):" + r.ToString() + " LW/PH"; li.SetValue(ToolTipService.ToolTipProperty, "利用水平线条测试分辨率,接近相机的中心分辨率,数据表示在一张照片里面可以分辨的垂直线条的数量"); li.Click += new RoutedEventHandler(ISO12233MTF_Click); ResultPanel.Children.Add(li); processbar.Value = 60; r = ISOChart.getVEdgeResoveLines(); li = new Button(); li.Name = "VResolvingPower"; li.Content = "分辨率(垂直线):" + r.ToString() + " LW/PH"; li.SetValue(ToolTipService.ToolTipProperty, "利用垂直线条测试分辨率,接近相机的边沿分辨率,数据表示在一张照片里面可以分辨的垂直线条的数量"); li.Click += new RoutedEventHandler(ISO12233MTF_Click); ResultPanel.Children.Add(li); processbar.Value = 70; li = new Button(); decimal d = ISOChart.getHDispersiveness(); li.Name = "HDispersiveness"; li.Content = "色散(水平线):" + d.ToString() + " pxl"; li.SetValue(ToolTipService.ToolTipProperty, "利用水平线条测试,接近中央色散程度,数据表示红绿蓝三原色在边界分离的程度,无色散时为0"); li.Click += new RoutedEventHandler(ISO12233Dispersiveness_Click); ResultPanel.Children.Add(li); processbar.Value = 85; li = new Button(); d = ISOChart.getVDispersiveness(); li.Name = "VDispersiveness"; li.Content = "色散(垂直线):" + d.ToString() + " pxl"; li.SetValue(ToolTipService.ToolTipProperty, "利用垂直线条测试,接近边沿色散程度,数据表示红绿蓝三原色在边界分离的程度,无色散时为0"); li.Click += new RoutedEventHandler(ISO12233Dispersiveness_Click); ResultPanel.Children.Add(li); processbar.Value = 100; sw.Stop(); li.SetValue(ToolTipService.ToolTipProperty, "测试共花费" + sw.Interval.Milliseconds.ToString() + "ms"); Logo.Source = ISOChart.AnalysePhoto; }
public ISO12233ExTestViewModel() { TestChart = new ISO12233ExChart(); Test = TestISO12233Ex; }