Esempio n. 1
0
        //--------------------------------------------------------------------------------------
        public static Bitmap ProximityPicture(Bitmap pSourcePicture, int pCountCubic)
        {
            Bitmap lTargetPicture = pSourcePicture.Clone() as Bitmap;
            CProximityColorData lProximityColorData = new CProximityColorData(pSourcePicture, pCountCubic);

            lProximityColorData.EnforceToAverage(lTargetPicture);
            return(lTargetPicture);
        }
Esempio n. 2
0
        //--------------------------------------------------------------------------------------
        public static Bitmap[] CreateProjection(Bitmap pSourcePicture, int pScale)
        {
            CProximityColorData lProximityColorData = new CProximityColorData(pSourcePicture, pScale);
            int    lNewPictureSize = pScale * 256;
            Bitmap lProjectionXY   = new Bitmap(lNewPictureSize, lNewPictureSize);
            Bitmap lProjectionXZ   = new Bitmap(lNewPictureSize, lNewPictureSize);
            Bitmap lProjectionYZ   = new Bitmap(lNewPictureSize, lNewPictureSize);
            Color  lBackColor      = Color.FromArgb(255, 255, 255);
            Color  lForeColor      = Color.FromArgb(0, 0, 0);

            for (int i = 0; i < lNewPictureSize; i++)
            {
                for (int j = 0; j < lNewPictureSize; j++)
                {
                    lProjectionXY.SetPixel(i, j, lBackColor);
                    lProjectionXZ.SetPixel(i, j, lBackColor);
                    lProjectionYZ.SetPixel(i, j, lBackColor);
                }
            }
            foreach (CProximityColorList lColorList in lProximityColorData)
            {
                int lXPos   = lColorList.CubeCoordinate[0];
                int lYPos   = lColorList.CubeCoordinate[1];
                int lZPos   = lColorList.CubeCoordinate[2];
                int lRadius = (Convert.ToInt32(Math.Ceiling((1.0 * pScale * lProximityColorData.MaxSize) / lColorList.Count)) - 1) / 2; //????
                for (int i = lXPos * pScale - lRadius; i <= lXPos * pScale + lRadius; i++)
                {
                    for (int j = lYPos * pScale - lRadius; j <= lYPos * pScale + lRadius; j++)
                    {
                        if (i >= 0 && j < lNewPictureSize && j >= 0 && j < lNewPictureSize)
                        {
                            lProjectionXY.SetPixel(i, j, lForeColor);
                        }
                    }
                }
                for (int i = lXPos * pScale - lRadius; i <= lXPos * pScale + lRadius; i++)
                {
                    for (int j = lZPos * pScale - lRadius; j <= lZPos * pScale + lRadius; j++)
                    {
                        if (i >= 0 && j < lNewPictureSize && j >= 0 && j < lNewPictureSize)
                        {
                            lProjectionXZ.SetPixel(i, j, lForeColor);
                        }
                    }
                }
                for (int i = lYPos * pScale - lRadius; i <= lYPos * pScale + lRadius; i++)
                {
                    for (int j = lZPos * pScale - lRadius; j <= lZPos * pScale + lRadius; j++)
                    {
                        if (i >= 0 && j < lNewPictureSize && j >= 0 && j < lNewPictureSize)
                        {
                            lProjectionYZ.SetPixel(i, j, lForeColor);
                        }
                    }
                }
            }
            return(new Bitmap[] { lProjectionXY, lProjectionXZ, lProjectionYZ });
        }