public bool EnableInvertedSymbols { get; set; }
true to force the Datamatrix engine to search for both inverted and normal (non-inverted) symbols. Otherwise, false. The default value is false.
The Datamatrix reader engine can automatically read inverted symbols. An inverted symbol is one that has white foreground color and black background for example.
Notice that the colors to search for when reading Datamatrix barcodes can be set using ForeColor and BackColor. When EnableInvertedSymbols is true, the engine will use the two colors specified and then automatically flip them and try again if it cannot find the symbol.
using Leadtools;using Leadtools.Codecs;using Leadtools.Barcode;using Leadtools.ImageProcessing;public void DatamatrixBarcode_Example(){string imageFileName = Path.Combine(LEAD_VARS.ImagesDir, "MyDatamatrixBarcodes.tif");BarcodeEngine engine = new BarcodeEngine();// Create the image to write the barcodes toint resolution = 300;using (RasterImage image = RasterImage.Create((int)(8.5 * resolution), (int)(11.0 * resolution), 1, resolution, RasterColor.FromKnownColor(RasterKnownColor.White))){// Write two Datamatrix barcodes, a square and a rectangle oneWriteBarcode(engine.Writer, image, DatamatrixBarcodeSymbolSize.Size16X36, "Datamatrix1 16x36", false);WriteBarcode(engine.Writer, image, DatamatrixBarcodeSymbolSize.Size132X132, "Datamatrix2 132x132", true);// Save the imageusing (RasterCodecs codecs = new RasterCodecs()){codecs.Save(image, imageFileName, RasterImageFormat.CcittGroup4, 1);}}// Now read the barcodes againusing (RasterCodecs codecs = new RasterCodecs()){using (RasterImage image = codecs.Load(imageFileName)){// Read only square symbols, should only read the first barcodeReadBarcodes(engine.Reader, image, true);// Read all symbols, should read both barcodesReadBarcodes(engine.Reader, image, false);}}}private void WriteBarcode(BarcodeWriter writer, RasterImage image, DatamatrixBarcodeSymbolSize symbolSize, string value, bool topLeft){// Create the barcode dataDatamatrixBarcodeData barcode = BarcodeData.CreateDefaultBarcodeData(BarcodeSymbology.Datamatrix) as DatamatrixBarcodeData;barcode.SymbolSize = symbolSize;barcode.Value = value;barcode.Symbology= BarcodeSymbology.Datamatrix;// We will use the alignment to position the barcodes, so use all of the imagebarcode.Bounds = new LeadRect(0, 0, image.ImageWidth, image.ImageHeight);// Set the write optionsDatamatrixBarcodeWriteOptions options = new DatamatrixBarcodeWriteOptions();if (topLeft){options.HorizontalAlignment = BarcodeAlignment.Near;options.VerticalAlignment = BarcodeAlignment.Near;}else{options.HorizontalAlignment = BarcodeAlignment.Far;options.VerticalAlignment = BarcodeAlignment.Far;}options.DisableCompression = false;options.GroupNumber = 0;options.GroupTotal = 0;options.FileIdNumberLowByte = 1;options.FileIdNumberHighByte = 1;options.XModule = 30;options.HRItoGS1 = false;// Write itConsole.WriteLine("Writing barcode with symbol size: {0} and Data: {1}", symbolSize, value);writer.WriteBarcode(image, barcode, options);}private void ReadBarcodes(BarcodeReader reader, RasterImage image, bool squareOnly){// Setup read optionsDatamatrixBarcodeReadOptions options = new DatamatrixBarcodeReadOptions();options.ReadSquareSymbolsOnly = squareOnly;options.EnableDoublePass = false;options.EnableDoublePassIfSuccess = false;options.EnableInvertedSymbols = false;options.EnableFastMode = true;options.EnableSmallSymbols = true;options.EnablePreprocessing = true;options.GS1toHRI = false;Console.WriteLine("Reading Datamatrix barcodes with ReadSquareSymbolsOnly set to {0}", squareOnly);BarcodeData[] barcodes = reader.ReadBarcodes(image, LeadRect.Empty, 0, new BarcodeSymbology[] { BarcodeSymbology.Datamatrix }, new BarcodeReadOptions[] { options });Console.WriteLine("{0} barcodes found:", barcodes.Length);foreach (DatamatrixBarcodeData barcode in barcodes){Console.WriteLine(" At {0}, symbol size: {1} data: {2} and symbology: {3}", barcode.Bounds, barcode.SymbolSize, barcode.Value, barcode.Symbology);}}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";}