public int XModule { get; set; }
An Int32 that indicates the size of the smallest module when writing a Datamatrix barcode in a thousandth of an inch. Must be a value greater to or equal to 0. Default value is 30 (0.03 of an inch).
If the value is too small, a minimum of 2 pixels will be used regardless of the value set in XModule.
For more information, refer to Writing Barcodes - Bounds and XModule.
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:\LEADTOOLS23\Resources\Images";}