public void createPixelGrid(byte[] rawData, int sizex, int sizey, SeismicUtilities.Point offsetpoint, int pixelPaddingX, int pixelPaddingY, double rotation) { long memoryoffset = 0; //Turn all pixels white while (memoryoffset < sizex * sizey * pixelFormat.BitsPerPixel / 8) { //deal with one pixel at a time rawData[memoryoffset++] = (byte)255; rawData[memoryoffset++] = (byte)255; rawData[memoryoffset++] = (byte)255; rawData[memoryoffset++] = (byte)255; } //Draw horizontal border lines int x = 0, y = 0; for (int i = 0; i < sizex; i++) { x = i; y = 0; memoryoffset = (y * sizex + x) * pixelFormat.BitsPerPixel / 8; rawData[memoryoffset++] = (byte)0; rawData[memoryoffset++] = (byte)0; rawData[memoryoffset++] = (byte)0; rawData[memoryoffset++] = (byte)255; y = sizey - 1; memoryoffset = (y * sizex + x) * pixelFormat.BitsPerPixel / 8; rawData[memoryoffset++] = (byte)0; rawData[memoryoffset++] = (byte)0; rawData[memoryoffset++] = (byte)0; rawData[memoryoffset++] = (byte)255; } //Draw vertical border lines for (int i = 0; i < sizey; i++) { x = 0; y = i; memoryoffset = (y * sizex + x) * pixelFormat.BitsPerPixel / 8; rawData[memoryoffset++] = (byte)0; rawData[memoryoffset++] = (byte)0; rawData[memoryoffset++] = (byte)0; rawData[memoryoffset++] = (byte)255; x = sizex - 1; memoryoffset = (y * sizex + x) * pixelFormat.BitsPerPixel / 8; rawData[memoryoffset++] = (byte)0; rawData[memoryoffset++] = (byte)0; rawData[memoryoffset++] = (byte)0; rawData[memoryoffset++] = (byte)255; } SeismicUtilities.Point bottomLeft = offsetpoint; SeismicUtilities.Point bottomRight = new SeismicUtilities.Point(offsetpoint.x + arraySpaceImageWidth - 2 * imagePixelPaddingX, offsetpoint.y); SeismicUtilities.Point topLeft = new SeismicUtilities.Point(offsetpoint.x, offsetpoint.y + arraySpaceImageHeight - 2 * imagePixelPaddingY); SeismicUtilities.Point topRight = new SeismicUtilities.Point(offsetpoint.x + arraySpaceImageWidth - 2 * imagePixelPaddingX, offsetpoint.y + arraySpaceImageHeight - 2 * imagePixelPaddingY); SeismicUtilities.Point rotatedTopLeft = topLeft.rotatePointAboutPoint(rotation, offsetpoint); SeismicUtilities.Point rotatedTopRight = topRight.rotatePointAboutPoint(rotation, offsetpoint); SeismicUtilities.Point rotatedBottomRight = bottomRight.rotatePointAboutPoint(rotation, offsetpoint); //Left rectangle line SeismicUtilities.LineSegment line = new SeismicUtilities.LineSegment(new SeismicUtilities.Point(rotatedTopLeft.x, arraySpaceImageHeight - rotatedTopLeft.y), new SeismicUtilities.Point(offsetpoint.x, arraySpaceImageHeight - offsetpoint.y)); List<SeismicUtilities.Point> points = ArraySpaceUtilities.getArrayIndiciesMarkedByLine(line, sizex, sizey); drawPoints(points, sizex, sizey, rawData); //Bottom rect line line = new SeismicUtilities.LineSegment(new SeismicUtilities.Point(offsetpoint.x, arraySpaceImageHeight - offsetpoint.y), new SeismicUtilities.Point(rotatedBottomRight.x, arraySpaceImageHeight - rotatedBottomRight.y)); points = ArraySpaceUtilities.getArrayIndiciesMarkedByLine(line, sizex, sizey); drawPoints(points, sizex, sizey, rawData); //Right rect line line = new SeismicUtilities.LineSegment(new SeismicUtilities.Point(rotatedBottomRight.x, arraySpaceImageHeight - rotatedBottomRight.y), new SeismicUtilities.Point(rotatedTopRight.x, arraySpaceImageHeight - rotatedTopRight.y)); points = ArraySpaceUtilities.getArrayIndiciesMarkedByLine(line, sizex, sizey); drawPoints(points, sizex, sizey, rawData); //top rect line line = new SeismicUtilities.LineSegment(new SeismicUtilities.Point(rotatedTopRight.x, arraySpaceImageHeight - rotatedTopRight.y), new SeismicUtilities.Point(rotatedTopLeft.x, arraySpaceImageHeight - rotatedTopLeft.y)); points = ArraySpaceUtilities.getArrayIndiciesMarkedByLine(line, sizex, sizey); drawPoints(points, sizex, sizey, rawData); ////Draw horizontal array space lines //for (int i = 0; i < sizex - 2 * pixelPaddingX; i++) // { // x = i; // y = pixelPaddingY; // memoryoffset = (y * sizex + x + pixelPaddingX) * pixelFormat.BitsPerPixel / 8; // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)255; // y = sizey - 1 - pixelPaddingY; // memoryoffset = (y * sizex + x + pixelPaddingX) * pixelFormat.BitsPerPixel / 8; // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)255; // } //Draw vertical array space lines //for (int i = 0; i < sizey - 2 * pixelPaddingY; i++) //{ // x = pixelPaddingX; // y = i + pixelPaddingY; // memoryoffset = (y * sizex + x) * pixelFormat.BitsPerPixel / 8; // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)255; // x = sizex - 1 - pixelPaddingX; // memoryoffset = (y * sizex + x) * pixelFormat.BitsPerPixel / 8; // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)255; //} #region //for (int i = 1; i < numxregions; i++) //{ // for (int j = 0; j < sizey; j++) // { // x = i * sizex / numxregions; // y = j; // memoryoffset = (y * sizex + x) * pixelFormat.BitsPerPixel / 8; // //if (i == 1) // //{ // // rawData[memoryoffset++] = (byte)0; // // rawData[memoryoffset++] = (byte)255; // // rawData[memoryoffset++] = (byte)0; // // rawData[memoryoffset++] = (byte)255; // //} // //else // //{ // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)255; // //} // } //} //for (int i = 1; i < numyregions; i++) //{ // for (int j = 0; j < sizex; j++) // { // x = j; // y = i * sizey / numyregions; // memoryoffset = (y * sizex + x )* pixelFormat.BitsPerPixel / 8; // //if (i == 1) // //{ // // rawData[memoryoffset++] = (byte)0; // // rawData[memoryoffset++] = (byte)255; // // rawData[memoryoffset++] = (byte)0; // // rawData[memoryoffset++] = (byte)255; // //} // //else // //{ // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)0; // rawData[memoryoffset++] = (byte)255; // //} // } //} #endregion }
public void DisplayLineOnPixelGrid(SeismicUtilities.Point[] coordinateList, int numxregion, int numyregion) { if (coordinateList == null) return; for (int i = 0; i < coordinateList.Count(); i++) { markImageSection((int)coordinateList.ElementAt(i).x, (int)coordinateList.ElementAt(i).y, numxregion, numyregion); } }