private ShapeRange traceBitmap(Shape s, Point p) { var sr = new ShapeRange(); sr.RemoveAll(); try { Shape dub = s.Duplicate(p.X, p.Y); dub.Bitmap.Resample(0, 0, true, 72, 72); dub.ApplyEffectBCI(-100, 100, -100); ShapeRange tr = dub.Bitmap.Trace( cdrTraceType.cdrTraceLineArt, -1, 1, cdrColorType.cdrColorCMYK, cdrPaletteID.cdrCustom, 1, true, false, true ).Finish(); Shape path = tr.UngroupAllEx().Combine(); path.Curve.Nodes.All().AutoReduce(0.01); sr.Add(path); if ((bool)cbBitmapToPowerClip.IsChecked) { Shape clip = path.Duplicate(p.X * -1, p.Y * -1); clip.OrderBackOf(s); clip.Fill.ApplyNoFill(); clip.Outline.SetNoOutline(); s.AddToPowerClip(clip); sr.Add(clip); } return(sr); } catch (Exception err) { MessageBox.Show(err.ToString(), MName, MessageBoxButton.OK, MessageBoxImage.Error); return(sr); } }
private void btnCrLineColor_Click(object sender, RoutedEventArgs e) { if (checkActive()) { MessageBox.Show(err, "Lỗi", MessageBoxButton.OK, MessageBoxImage.Error); return; } try { Size s = new Size(app.ActiveSelection.SizeWidth, app.ActiveSelection.SizeHeight); ShapeRange rowRange = app.ActiveSelectionRange; ShapeRange colRev = app.ActiveSelectionRange; ShapeRange rowRev = app.ActiveSelectionRange; colRev.RemoveAll(); rowRev.RemoveAll(); rowRange.RemoveAll(); Size position = new Size(app.ActiveSelectionRange.PositionX, app.ActiveSelectionRange.PositionY); Size size = new Size(s.x * numCol.Value, s.y * numRow.Value); app.ActiveSelection.Delete(); Shape shapeCol = app.ActiveLayer.CreateLineSegment(position.x, position.y, position.x, position.y - size.y); shapeCol.Outline.Color.CMYKAssign(100, 0, 100, 0); double space = 0; for (int i = 0; i < numCol.Value; i++) { space += s.x; if (i % 2 == 0 || i == numCol.Value - 1) { colRev.Add(shapeCol.Duplicate(space, 0)); } else { shapeCol.Duplicate(space, 0); } } shapeCol.OrderToFront(); colRev.Flip(cdrFlipAxes.cdrFlipVertical); space = 0; Shape shapeRow = app.ActiveLayer.CreateLineSegment(position.x, position.y, position.x + size.x, position.y); shapeRow.Outline.Color.CMYKAssign(0, 100, 100, 0); rowRev.Add(shapeRow); for (int j = 0; j < numRow.Value; j++) { space += s.y; if (j % 2 != 0 || j == numRow.Value - 1) { rowRev.Add(shapeRow.Duplicate(0, -space)); } else { rowRange.Add(shapeRow.Duplicate(0, -space)); } } shapeRow.OrderToFront(); rowRange.AddRange(rowRev); rowRange.OrderReverse(); rowRev.Flip(cdrFlipAxes.cdrFlipHorizontal); app.ActiveLayer.CreateRectangle2(position.x, position.y - size.y, size.x, size.y).CreateSelection(); } catch (Exception ex) { MessageBox.Show(ex.Message + "\n" + ex.Source, "Lỗi"); } }
private void DoDrawCropMarks() { double X, y, cx, cy; double sx, sy, dx, ty; double Off, l, Cu; long N; ShapeRange sr = new ShapeRange(); Shape s, s1; ShapeRange AllShapes = new ShapeRange(); this.StartEvent(); app.ActiveDocument.Unit = cdrUnit.cdrMillimeter; app.ActiveDocument.PreserveSelection = false; app.ActiveDocument.Selection().GetBoundingBox(out X, out y, out cx, out cy, false); Off = (double)nudOffset.Value; l = (double)nudLen.Value; sr.Add(DrawLine(X - Off - l, y, X - Off, y)); sr.Add(DrawLine(X - Off - l, y + cy, X - Off, y + cy)); sr.Add(DrawLine(X + cx + Off, y, X + cx + Off + l, y)); sr.Add(DrawLine(X + cx + Off, y + cy, X + cx + Off + l, y + cy)); sr.Add(DrawLine(X, y - Off - l, X, y - Off)); sr.Add(DrawLine(X + cx, y - Off - l, X + cx, y - Off)); sr.Add(DrawLine(X, y + Off + l + cy, X, y + Off + cy)); sr.Add(DrawLine(X + cx, y + Off + l + cy, X + cx, y + Off + cy)); AllShapes.Add(sr.Group()); if (chkCu.Checked) { Cu = (double)nudCu.Value; sr.RemoveAll(); sr.Add(DrawLine(X - Off - l, y + Cu, X - Off, y + Cu)); sr.Add(DrawLine(X - Off - l, y + cy - Cu, X - Off, y + cy - Cu)); sr.Add(DrawLine(X + cx + Off, y + Cu, X + cx + Off + l, y + Cu)); sr.Add(DrawLine(X + cx + Off, y + cy - Cu, X + cx + Off + l, y + cy - Cu)); sr.Add(DrawLine(X + Cu, y - Off - l, X + Cu, y - Off)); sr.Add(DrawLine(X + cx - Cu, y - Off - l, X + cx - Cu, y - Off)); sr.Add(DrawLine(X + Cu, y + Off + l + cy, X + Cu, y + Off + cy)); sr.Add(DrawLine(X + cx - Cu, y + Off + l + cy, X + cx - Cu, y + Off + cy)); AllShapes.Add(sr.Group()); } if (chkZxsp.Checked) { sr.RemoveAll(); sr.RemoveAll(); sr.Add(DrawLine(X - Off - l, y + cy / 2, X, y + cy / 2)); sr.Add(DrawLine(X + cx, y + cy / 2, X + cx + Off + l, y + cy / 2)); Outline ol = new Outline(); sr.SetOutlinePropertiesEx(-1, new OutlineStyle(), app.CreateCMYKColor(100, 100, 100, 100), null, null, cdrTriState.cdrFalse, cdrTriState.cdrFalse, cdrOutlineLineCaps.cdrOutlineButtLineCaps); //sr.SetOutlineProperties(0.2, new OutlineStyle(2)); AllShapes.Add(sr.Group()); } if (chkZxcz.Checked) { sr.RemoveAll(); sr.Add(DrawLine(X + cx / 2, y + cy, X + cx / 2, y + cy + Off + l)); sr.Add(DrawLine(X + cx / 2, y, X + cx / 2, y - Off - l)); OutlineStyle ols = new OutlineStyle(); sr.SetOutlineProperties(0.2, ols); AllShapes.Add(sr.Group()); } if (chkJdsp.Checked) { Cu = (double)nudCu.Value; sr.RemoveAll(); sr.Add(DrawLine(X - Off - l, y + cy / 2 + Cu, X - Off, y + cy / 2 + Cu)); sr.Add(DrawLine(X - Off - l, y + cy / 2 - Cu, X - Off, y + cy / 2 - Cu)); sr.Add(DrawLine(X + cx + Off, y + cy / 2 + Cu, X + cx + Off + l, y + cy / 2 + Cu)); sr.Add(DrawLine(X + cx + Off, y + cy / 2 - Cu, X + cx + Off + l, y + cy / 2 - Cu)); AllShapes.Add(sr.Group()); } if (chkJdcz.Checked) { Cu = (double)nudCu.Value; sr.RemoveAll(); sr.Add(DrawLine(X + cx / 2 + Cu, y + cy + Off, X + cx / 2 + Cu, y + cy + Off + l)); sr.Add(DrawLine(X + cx / 2 - Cu, y + cy + Off, X + cx / 2 - Cu, y + cy + Off + l)); sr.Add(DrawLine(X + cx / 2 + Cu, y - Off, X + cx / 2 + Cu, y - Off - l)); sr.Add(DrawLine(X + cx / 2 - Cu, y - Off, X + cx / 2 - Cu, y - Off - l)); AllShapes.Add(sr.Group()); } AllShapes.Group(); this.EndEvent(); }