public static DesignerContainer Group(DesignerCanvas dc, IEnumerable <DesignerContainer> items) { if (items != null && dc != null) { var rect = GetBoundingRectangle(items); var groupItem = new DesignerContainer(); groupItem.IsGroup = true; groupItem.Width = rect.Width; groupItem.Height = rect.Height; m_oldLeft = rect.Left; m_oldTop = rect.Top; Canvas.SetLeft(groupItem, rect.Left); Canvas.SetTop(groupItem, rect.Top); var groupCanvas = new Canvas(); groupItem.Content = groupCanvas; Panel.SetZIndex(groupItem, dc.Children.Count); dc.Add(groupItem); foreach (var item in items) { item.ParentID = groupItem.ID; } dc.SelectionService.SelectItem(groupItem); groupItem.NameVisible = false; ///SaveOpt(mgr.CurrentCanvas, mgr); return(groupItem); } return(null); }
public override bool ReRun(CommandManager mgr) { if (dc != null) { dc.Add(m_di); dc.SelectionService.SelectItem(m_di); } var adornerLayer = AdornerLayer.GetAdornerLayer(dc); //PolylineAdorner adorner = dc.m_pAdorner; //if (adornerLayer != null && adorner != null) //{ // if (adorner.IsMouseCaptured) // { // adorner.ReleaseMouseCapture(); // } // adornerLayer.Remove(adorner); //} return(true); }
public override bool Run(CommandManager mgr, params object[] param) { dc = param[0] as DesignerCanvas; var di = param[1] as DesignerContainer; if (dc != null) { m_di = di; dc.Add(di); dc.SelectionService.SelectItem(di); } var adornerLayer = AdornerLayer.GetAdornerLayer(dc); // PolylineAdorner adorner = dc.m_pAdorner; //if (adornerLayer != null && adorner != null) //{ // if (adorner.IsMouseCaptured) // { // adorner.ReleaseMouseCapture(); // } // adornerLayer.Remove(adorner); //} return(true); }
/// <summary> /// Do work /// </summary> private void ProcessImageWorker(object state) { ScannedImage scannedImage = null; Image original = null; try { lock (this.m_lockObject) using (var ms = new MemoryStream((byte[])state)) { var img = Image.FromStream(ms); img.RotateFlip(RotateFlipType.Rotate270FlipNone); scannedImage = new ScannedImage(img); } scannedImage.Analyze(); original = (Image) new AForge.Imaging.Filters.ResizeNearestNeighbor(scannedImage.Image.Width / 4, scannedImage.Image.Height / 4).Apply((Bitmap)scannedImage.Image); } catch { if (scannedImage != null) { scannedImage.Dispose(); } return; // Abort } try { // Add an Error entry if (!scannedImage.IsScannable) { ListViewItem lsv = new ListViewItem(); lsv.Tag = 2; lsv.SubItems.Add(new ListViewItem.ListViewSubItem(lsv, "Scanned image doesn't appear to be a scannable form.")); lock (this.m_lockObject) this.m_uiResults.Add(lsv, original); } else { Engine engine = new Engine(); var templateFile = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), scannedImage.TemplateName + ".mxml"); if (!File.Exists(templateFile)) { ListViewItem lsv = new ListViewItem(); lsv.Tag = 0; lsv.SubItems.Add(new ListViewItem.ListViewSubItem(lsv, "Template file " + templateFile + " is missing")); lock (this.m_lockObject) this.m_uiResults.Add(lsv, original); return; } // Apply template var template = OmrTemplate.Load(templateFile); var pageData = engine.ApplyTemplate( template, scannedImage); // Draw the page data ICanvas canvas = new DesignerCanvas(); canvas.Add(new OmrMarkEngine.Output.Design.OutputVisualizationStencil(pageData)); original.Dispose(); original = new Bitmap((int)template.BottomRight.X, (int)template.BottomLeft.Y, System.Drawing.Imaging.PixelFormat.Format24bppRgb); using (Graphics g = Graphics.FromImage(original)) { float width = template.TopRight.X - template.TopLeft.X, height = template.BottomLeft.Y - template.TopLeft.Y; g.DrawImage(scannedImage.Image, template.TopLeft.X, template.TopLeft.Y, width, height); canvas.DrawTo(g); } // Save original analyzed image try { String tPath = Path.GetTempFileName(); original.Save(tPath); pageData.AnalyzedImage = tPath; } catch { } var oldOriginal = original; original = (Image) new AForge.Imaging.Filters.ResizeNearestNeighbor(scannedImage.Image.Width / 2, scannedImage.Image.Height / 2).Apply((Bitmap)original); oldOriginal.Dispose(); lock (this.m_lockObject) { if (pageData.Outcome == OmrScanOutcome.Failure) { ListViewItem lsv = new ListViewItem(); lsv.Tag = 0; lsv.SubItems.Add(new ListViewItem.ListViewSubItem(lsv, pageData.ErrorMessage)); lock (this.m_lockObject) this.m_uiResults.Add(lsv, original); } else { var validation = pageData.Validate(template); ListViewItem lsv = new ListViewItem(); lsv.Tag = validation.IsValid ? 2 : 1; if (!validation.IsValid) { lsv.SubItems.Add(validation.Issues[0]); } lsv.Tag = pageData; lock (this.m_lockObject) this.m_executionQueue.Enqueue(new KeyValuePair <OmrTemplate, OmrPageOutput>(template, pageData)); lock (this.m_lockObject) this.m_uiResults.Add(lsv, original); } this.m_scannedPages.Pages.Add(pageData); } } } catch (Exception e) { ListViewItem lsv = new ListViewItem(); lsv.Tag = 0; lsv.SubItems.Add(e.Message); lock (this.m_lockObject) this.m_uiResults.Add(lsv, original); } }
/// <summary> /// Update template diagram /// </summary> private void UpdateTemplateDiagram() { mnuSave.Enabled = true; m_canvas.Clear(); m_canvas.Add(new BackgroundImageShape(m_currentTemplate), "img"); // Add indicators for the indicators m_canvas.Add(new CornerAnchorShape(m_currentTemplate.TopLeft, "TL"), "TL"); m_canvas.Add(new CornerAnchorShape(m_currentTemplate.TopRight, "TR"), "TR"); m_canvas.Add(new CornerAnchorShape(m_currentTemplate.BottomLeft, "BL"), "BL"); m_canvas.Add(new CornerAnchorShape(m_currentTemplate.BottomRight, "BR"), "BR"); // Join the canvas stuff m_canvas.Add(new ConnectionLineShape { Source = m_canvas.FindShape("TL"), Target = m_canvas.FindShape("TR"), OutlineWidth = 4, OutlineColor = Color.OrangeRed, OutlineStyle = DashStyle.Dot }); m_canvas.Add(new ConnectionLineShape { Source = m_canvas.FindShape("TR"), Target = m_canvas.FindShape("BR"), OutlineWidth = 4, OutlineColor = Color.OrangeRed, OutlineStyle = DashStyle.Dot }); m_canvas.Add(new ConnectionLineShape { Source = m_canvas.FindShape("BL"), Target = m_canvas.FindShape("BR"), OutlineWidth = 4, OutlineColor = Color.OrangeRed, OutlineStyle = DashStyle.Dot }); m_canvas.Add(new ConnectionLineShape { Source = m_canvas.FindShape("TL"), Target = m_canvas.FindShape("BL"), OutlineWidth = 4, OutlineColor = Color.OrangeRed, OutlineStyle = DashStyle.Dot }); }