/// <summary> /// Determines whether the specified string can be used as data in the DataMatrix. /// </summary> /// <param name="text">The code to be checked.</param> protected override void CheckCode(string text) { if (text == null) { throw new ArgumentNullException("text"); } DataMatrixImage mImage = new DataMatrixImage(Text, Encoding, Rows, Columns); mImage.Iec16022Ecc200(Columns, Rows, Encoding, Text.Length, Text, 0, 0, 0); }
/// <summary> /// Renders the matrix code. /// </summary> protected internal override void Render(XGraphics gfx, XBrush brush, XPoint position) { XGraphicsState state = gfx.Save(); switch (Direction) { case CodeDirection.RightToLeft: gfx.RotateAtTransform(180, position); break; case CodeDirection.TopToBottom: gfx.RotateAtTransform(90, position); break; case CodeDirection.BottomToTop: gfx.RotateAtTransform(-90, position); break; } XPoint pos = position + CalcDistance(Anchor, AnchorType.TopLeft, Size); if (MatrixImage == null) { MatrixImage = DataMatrixImage.GenerateMatrixImage(Text, Encoding, Rows, Columns); } if (QuietZone > 0) { XSize sizeWithZone = new XSize(Size.Width, Size.Height); sizeWithZone.Width = sizeWithZone.Width / (Columns + 2 * QuietZone) * Columns; sizeWithZone.Height = sizeWithZone.Height / (Rows + 2 * QuietZone) * Rows; XPoint posWithZone = new XPoint(pos.X, pos.Y); posWithZone.X += Size.Width / (Columns + 2 * QuietZone) * QuietZone; posWithZone.Y += Size.Height / (Rows + 2 * QuietZone) * QuietZone; gfx.DrawRectangle(XBrushes.White, pos.X, pos.Y, Size.Width, Size.Height); gfx.DrawImage(MatrixImage, posWithZone.X, posWithZone.Y, sizeWithZone.Width, sizeWithZone.Height); } else { gfx.DrawImage(MatrixImage, pos.X, pos.Y, Size.Width, Size.Height); } gfx.Restore(state); }
public static XImage GenerateMatrixImage(string text, string encoding, int rows, int columns) { DataMatrixImage dataMatrixImage = new DataMatrixImage(text, encoding, rows, columns); return(dataMatrixImage.DrawMatrix()); }