Exemple #1
0
        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
        }
Exemple #2
0
        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);
            }
        }