本文整理匯總了C#中BitMatrix類的典型用法代碼示例。如果您正苦於以下問題:C# BitMatrix類的具體用法?C# BitMatrix怎麽用?C# BitMatrix使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
BitMatrix類屬於命名空間,在下文中一共展示了BitMatrix類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: XorMatrix
/// <summary>
/// Xors the matrix.
/// </summary>
/// <param name="first">The first.</param>
/// <param name="second">The second.</param>
/// <returns></returns>
/// <remarks></remarks>
private static TriStateMatrix XorMatrix(TriStateMatrix first, BitMatrix second)
{
int width = first.Width;
var maskedMatrix = new TriStateMatrix(width);
for (int x = 0; x < width; x++)
{
for (int y = 0; y < width; y++)
{
MatrixStatus states = first.MStatus(x, y);
switch (states)
{
case MatrixStatus.NoMask:
maskedMatrix[x, y, MatrixStatus.NoMask] = first[x, y];
break;
case MatrixStatus.Data:
maskedMatrix[x, y, MatrixStatus.Data] = first[x, y] ^ second[x, y];
break;
default:
throw new ArgumentException("TristateMatrix has None value cell.", "first");
}
}
}
return maskedMatrix;
}
示例2: testRectangularMatrix
public void testRectangularMatrix()
{
BitMatrix matrix = new BitMatrix(75, 20);
Assert.AreEqual(75, matrix.Width);
Assert.AreEqual(20, matrix.Height);
matrix[10, 0] = true;
matrix[11, 1] = true;
matrix[50, 2] = true;
matrix[51, 3] = true;
matrix.flip(74, 4);
matrix.flip(0, 5);
// Should all be on
Assert.IsTrue(matrix[10, 0]);
Assert.IsTrue(matrix[11, 1]);
Assert.IsTrue(matrix[50, 2]);
Assert.IsTrue(matrix[51, 3]);
Assert.IsTrue(matrix[74, 4]);
Assert.IsTrue(matrix[0, 5]);
// Flip a couple back off
matrix.flip(50, 2);
matrix.flip(51, 3);
Assert.IsFalse(matrix[50, 2]);
Assert.IsFalse(matrix[51, 3]);
}
示例3: sampleGrid
public override BitMatrix sampleGrid(BitMatrix image, int dimension, float p1ToX, float p1ToY, float p2ToX, float p2ToY, float p3ToX, float p3ToY, float p4ToX, float p4ToY, float p1FromX, float p1FromY, float p2FromX, float p2FromY, float p3FromX, float p3FromY, float p4FromX, float p4FromY)
{
PerspectiveTransform transform = PerspectiveTransform.quadrilateralToQuadrilateral(p1ToX, p1ToY, p2ToX, p2ToY, p3ToX, p3ToY, p4ToX, p4ToY, p1FromX, p1FromY, p2FromX, p2FromY, p3FromX, p3FromY, p4FromX, p4FromY);
return sampleGrid(image, dimension, transform);
}
示例4: WriteToStream
/// <summary>
/// Renders the matrix in an Encapsuled PostScript format.
/// </summary>
/// <param name="matrix">The matrix to be rendered</param>
/// <param name="stream">Output stream that must be writable</param>
/// <remarks></remarks>
public void WriteToStream(BitMatrix matrix, Stream stream)
{
using (var writer = new StreamWriter(stream))
{
int width = matrix == null ? 21 : matrix.Width;
DrawingSize drawingSize = m_iSize.GetSize(width);
OutputHeader(drawingSize, writer);
OutputBackground(writer);
if (matrix != null)
{
switch (m_DrawingTechnique)
{
case EpsModuleDrawingTechnique.Squares:
DrawSquares(matrix, writer);
break;
case EpsModuleDrawingTechnique.Image:
DrawImage(matrix, writer);
break;
default:
throw new ArgumentOutOfRangeException("DrawingTechnique");
}
}
OutputFooter(writer);
}
}
示例5: TestPenaltyRule
private void TestPenaltyRule(BitMatrix input, PenaltyRules penaltyRule, int expected)
{
Penalty penalty = new PenaltyFactory().CreateByRule(penaltyRule);
int result = penalty.PenaltyCalculate(input);
AssertIntEquals(expected, result, input, penaltyRule);
}
示例6: Embed
internal static TriStateMatrix Embed(this TriStateMatrix matrix, BitMatrix stencil, IEnumerable<MatrixPoint> locations)
{
foreach (MatrixPoint location in locations)
{
Embed(matrix, stencil, location);
}
return matrix;
}
示例7: PenaltyCalculate
/// <summary>
/// Calculate penalty value for first rule.
/// </summary>
internal override int PenaltyCalculate(BitMatrix matrix)
{
MatrixSize size = matrix.Size;
int penaltyValue = 0;
penaltyValue = PenaltyCalculation(matrix, true) + PenaltyCalculation(matrix, false);
return penaltyValue;
}
示例8: Test_against_DataSet
public void Test_against_DataSet(TriStateMatrix input, MaskPatternType patternType, BitMatrix expected)
{
Pattern pattern = new PatternFactory().CreateByType(patternType);
BitMatrix result = input.Apply(pattern, ErrorCorrectionLevel.H);
expected.AssertEquals(result);
}
示例9: AssertIntEquals
protected static void AssertIntEquals(int expected, int actual, BitMatrix matrix, PenaltyRules penaltyRule)
{
if(expected != actual)
{
GenerateFaultyRecord(matrix, penaltyRule, expected, actual);
Assert.Fail("Penalty scores are different.\nExpected:{0}Actual:{1}.", expected.ToString(), actual.ToString());
}
}
示例10: WhiteRectangleDetector
/// <summary>
/// Initializes a new instance of the <see cref="WhiteRectangleDetector"/> class.
/// </summary>
/// <param name="image">The image.</param>
/// <exception cref="ArgumentException">if image is too small</exception>
internal WhiteRectangleDetector(BitMatrix image)
{
this.image = image;
height = image.Height;
width = image.Width;
leftInit = (width - INIT_SIZE) >> 1;
rightInit = (width + INIT_SIZE) >> 1;
upInit = (height - INIT_SIZE) >> 1;
downInit = (height + INIT_SIZE) >> 1;
}
示例11: WhiteRectangleDetector
/// <summary>
/// Initializes a new instance of the <see cref="WhiteRectangleDetector"/> class.
/// </summary>
/// <param name="image">The image.</param>
/// <param name="initSize">Size of the init.</param>
/// <param name="x">The x.</param>
/// <param name="y">The y.</param>
internal WhiteRectangleDetector(BitMatrix image, int initSize, int x, int y)
{
this.image = image;
height = image.Height;
width = image.Width;
int halfsize = initSize >> 1;
leftInit = x - halfsize;
rightInit = x + halfsize;
upInit = y - halfsize;
downInit = y + halfsize;
}
示例12: Create
/// <summary>
/// Creates a WhiteRectangleDetector instance
/// </summary>
/// <param name="image">The image.</param>
/// <param name="initSize">Size of the init.</param>
/// <param name="x">The x.</param>
/// <param name="y">The y.</param>
/// <returns>
/// null, if image is too small, otherwise a WhiteRectangleDetector instance
/// </returns>
public static WhiteRectangleDetector Create(BitMatrix image, int initSize, int x, int y)
{
var instance = new WhiteRectangleDetector(image, initSize, x, y);
if (instance.upInit < 0 || instance.leftInit < 0 || instance.downInit >= instance.height || instance.rightInit >= instance.width)
{
return null;
}
return instance;
}
示例13: DrawBrush
/// <summary>
/// Draw QrCode to DrawingBrush
/// </summary>
/// <returns>DrawingBrush, Stretch = uniform</returns>
/// <remarks>LightBrush will not use by this method, DrawingBrush will only contain DarkBrush part.
/// Use LightBrush to fill background of main uielement for more flexible placement</remarks>
public DrawingBrush DrawBrush(BitMatrix QrMatrix)
{
if (QrMatrix == null)
{
return ConstructDrawingBrush(null);
}
GeometryDrawing qrCodeDrawing = ConstructQrDrawing(QrMatrix, 0, 0);
return ConstructDrawingBrush(qrCodeDrawing);
}
示例14: PatternCheck
/// <summary>
/// Patterns the check.
/// </summary>
/// <param name="matrix">The matrix.</param>
/// <param name="i">The i.</param>
/// <param name="j">The j.</param>
/// <param name="isHorizontal">if set to <c>true</c> [is horizontal].</param>
/// <returns></returns>
/// <remarks></remarks>
private int PatternCheck(BitMatrix matrix, int i, int j, bool isHorizontal)
{
bool bit;
for (int num = 3; num >= 1; num--)
{
bit = isHorizontal
? matrix[j + num, i]
: matrix[i, j + num];
if (!bit)
return 0;
}
//Check for left side and right side x ( xoxxxox ).
if ((j - 1) < 0 || (j + 1) >= matrix.Width)
return 0;
bit = isHorizontal
? matrix[j + 5, i]
: matrix[i, j + 5];
if (!bit)
return 0;
bit = isHorizontal
? matrix[j - 1, i]
: matrix[i, j - 1];
if (!bit)
return 0;
if ((j - 5) >= 0)
{
for (int num = -2; num >= -5; num--)
{
bit = isHorizontal
? matrix[j + num, i]
: matrix[i, j + num];
if (bit)
break;
if (num == -5)
return 40;
}
}
if ((j + 9) < matrix.Width)
{
for (int num = 6; num <= 9; num++)
{
bit = isHorizontal
? matrix[j + num, i]
: matrix[i, j + num];
if (bit)
return 0;
}
return 40;
}
else
return 0;
}
示例15: DrawDarkModule
/// <summary>
/// Draw qrCode dark modules at given position. (It will also include quiet zone area. Set it to zero to exclude quiet zone)
/// </summary>
/// <exception cref="ArgumentNullException">Bitmatrix, wBitmap should not equal to null</exception>
/// <exception cref="ArgumentOutOfRangeException">wBitmap's pixel width or height should not equal to zero</exception>
public void DrawDarkModule(WriteableBitmap wBitmap, BitMatrix matrix, int offsetX, int offsetY)
{
if (matrix == null)
throw new ArgumentNullException("Bitmatrix");
DrawingSize size = ISize.GetSize(matrix.Width);
if (wBitmap == null)
throw new ArgumentNullException("wBitmap");
else if (wBitmap.PixelHeight == 0 || wBitmap.PixelWidth == 0)
throw new ArgumentOutOfRangeException("wBitmap", "WriteableBitmap's pixelHeight or PixelWidth are equal to zero");
int padding = (size.CodeWidth - size.ModuleSize * matrix.Width) / 2;
int preX = -1;
int moduleSize = size.ModuleSize;
if (moduleSize == 0)
return;
for (int y = 0; y < matrix.Width; y++)
{
for (int x = 0; x < matrix.Width; x++)
{
if (matrix[x, y])
{
if (preX == -1)
preX = x;
if (x == matrix.Width - 1)
{
Int32Rect moduleArea =
new Int32Rect(preX * moduleSize + padding + offsetX,
y * moduleSize + padding + offsetY,
(x - preX + 1) * moduleSize,
moduleSize);
wBitmap.FillRectangle(moduleArea, DarkColor);
preX = -1;
}
}
else if (preX != -1)
{
Int32Rect moduleArea =
new Int32Rect(preX * moduleSize + padding + offsetX,
y * moduleSize + padding + offsetY,
(x - preX) * moduleSize,
moduleSize);
wBitmap.FillRectangle(moduleArea, DarkColor);
preX = -1;
}
}
}
}