private void InitializeHexagons() { Rectangle clientRectangle = base.ClientRectangle; clientRectangle.Inflate(-8, -8); clientRectangle.Height -= this.GetHexagonWidth(Math.Min(clientRectangle.Height, clientRectangle.Width)) * 3; if (clientRectangle.Height < clientRectangle.Width) { clientRectangle.Inflate(-(clientRectangle.Width - clientRectangle.Height) / 2, 0); } else { clientRectangle.Inflate(0, -(clientRectangle.Height - clientRectangle.Width) / 2); } // int hexagonWidth = this.GetHexagonWidth(clientRectangle.Height); int centerOfMiddleHexagonX = (clientRectangle.Left + clientRectangle.Right) / 2; int centerOfMiddleHexagonY = (clientRectangle.Top + clientRectangle.Bottom) / 2; // this.hexagonElements[0].CurrentColor = Color.White; this.hexagonElements[0].SetHexagonPoints((float)centerOfMiddleHexagonX, (float)centerOfMiddleHexagonY, hexagonWidth); int index = 1; for (int i = 1; i < this.sectorMaximum; i++) { // float currentHexagonY = centerOfMiddleHexagonY; float currentHexagonX = centerOfMiddleHexagonX + (hexagonWidth * i); for (int innerIndex = 0; innerIndex < (this.sectorMaximum - 1); innerIndex++) { int verticalStep = (int)(hexagonWidth * this.matrix2[innerIndex]); int horizontalStep = (int)(hexagonWidth * this.matrix1[innerIndex]); for (int innermostIndex = 0; innermostIndex < i; innermostIndex++) { double colorQuotient2 = ((0.936 * (this.sectorMaximum - i)) / ((double)this.sectorMaximum)) + 0.12; float colorQuotient1 = ColorServices.GetColorQuotient(currentHexagonX - centerOfMiddleHexagonX, currentHexagonY - centerOfMiddleHexagonY); this.hexagonElements[index].SetHexagonPoints(currentHexagonX, currentHexagonY, hexagonWidth); this.hexagonElements[index].CurrentColor = ColorServices.ColorFromRGBRatios((double)colorQuotient1, colorQuotient2, 1); currentHexagonY += verticalStep; currentHexagonX += horizontalStep; index++; } } } InitializeGrayscaleHexagons(ref clientRectangle, hexagonWidth, ref centerOfMiddleHexagonX, ref centerOfMiddleHexagonY, ref index); }
private void InitializeHexagons() { Rectangle clientRectangle = this.ClientRectangle; clientRectangle.Offset(0, -8); if (clientRectangle.Height < clientRectangle.Width) { clientRectangle.Inflate(-(clientRectangle.Width - clientRectangle.Height) / 2, 0); } else { clientRectangle.Inflate(0, -(clientRectangle.Height - clientRectangle.Width) / 2); } int hexagonWidth = this.GetHexagonWidth(Math.Min(clientRectangle.Height, clientRectangle.Width)); int centerOfMiddleHexagonX = (clientRectangle.Left + clientRectangle.Right) / 2; int centerOfMiddleHexagonY = (clientRectangle.Top + clientRectangle.Bottom) / 2 - hexagonWidth; this.hexagonElements[0].CurrentColor = Color.White; this.hexagonElements[0].SetHexagonPoints((float)centerOfMiddleHexagonX, (float)centerOfMiddleHexagonY, hexagonWidth); int index1 = 1; for (int index2 = 1; index2 < this.sectorMaximum; ++index2) { float yCoordinate = (float)centerOfMiddleHexagonY; float xCoordinate = (float)(centerOfMiddleHexagonX + hexagonWidth * index2); for (int index3 = 0; index3 < this.sectorMaximum - 1; ++index3) { int num1 = (int)((double)hexagonWidth * (double)this.matrix2[index3]); int num2 = (int)((double)hexagonWidth * (double)this.matrix1[index3]); for (int index4 = 0; index4 < index2; ++index4) { double num3 = 0.936 * (double)(this.sectorMaximum - index2) / (double)this.sectorMaximum + 0.12; float colorQuotient = ColorServices.GetColorQuotient(xCoordinate - (float)centerOfMiddleHexagonX, yCoordinate - (float)centerOfMiddleHexagonY); this.hexagonElements[index1].SetHexagonPoints(xCoordinate, yCoordinate, hexagonWidth); this.hexagonElements[index1].CurrentColor = ColorServices.ColorFromRGBRatios((double)colorQuotient, num3, 1.0); yCoordinate += (float)num1; xCoordinate += (float)num2; ++index1; } } } clientRectangle.Y -= hexagonWidth + hexagonWidth / 2; this.InitializeGrayscaleHexagons(ref clientRectangle, hexagonWidth, ref centerOfMiddleHexagonX, ref centerOfMiddleHexagonY, ref index1); }