private void pantallaInicial() { Graphics g = GArbol.CreateGraphics(); g.DrawString("HEAP", new Font("Algerian", 66, FontStyle.Bold), System.Drawing.Brushes.Black, new Point(GArbol.Bounds.Width / 2 - 180, 55)); g.DrawString("SORT", new Font("Algerian", 66, FontStyle.Bold), System.Drawing.Brushes.Black, new Point(GArbol.Bounds.Width / 2 - 60, 140)); }
private void button2_Click(object sender, EventArgs e) { ingresoNumeros.Text = ""; ingresoNumeros.Enabled = true; button1.Enabled = true; HeapMinimo.Enabled = true; Graphics g = GArbol.CreateGraphics(); g.Clear(Color.Gray); button2.Visible = false; button3.Visible = false; comboBox1.Enabled = true; iPosLineasX = 0; posY = 30; iPosX = 0; }
private void graficarNodoArrOrdenado(int num) { Graphics g = GArbol.CreateGraphics(); g.FillEllipse(System.Drawing.Brushes.Green, posXArrOrd, GArbol.Bounds.Height - 42, 30, 30); if (num < -9 || num > 99) { g.DrawString("" + num, new Font("Algerian", 10), System.Drawing.Brushes.Black, new Point(posXArrOrd + 3, GArbol.Bounds.Height - 38)); } else { g.DrawString("" + num, new Font("Algerian", 10), System.Drawing.Brushes.Black, new Point(posXArrOrd + 9, GArbol.Bounds.Height - 38)); } posXArrOrd += 30; }
private void generarHeapMinimo(int[] arr) { int[] temp = new int[arr.Length + 1];// se crea un arreglo temporal para manejar los indices desde 17 Graphics g = GArbol.CreateGraphics(); escribirMinHeap(); for (int i = 0; i < arr.Length; i++) { temp[i + 1] = arr[i]; } for (int i = 2; i < temp.Length; i++)//se revisa que la raiz sea menor que los hijos, si no lo es, se hace el cambio { int padre = i / 2, numTemp; if (temp[i] < temp[padre]) { graficarArbol(temp, i + 1, -1, false); graficarArbol(temp, i + 1, i, false); //System.Threading.Thread.Sleep(350); numTemp = temp[i]; temp[i] = temp[padre]; temp[padre] = numTemp; graficarArbol(temp, i + 1, -1, false); i = 1; System.Threading.Thread.Sleep(Convert.ToInt32(300 / velocity)); } else { graficarArbol(temp, i + 1, -1, false); } } for (int i = 0; i < arr.Length; i++)//se regresa al arreglo original { arr[i] = temp[i + 1]; } }
private void graficarNodoArbol(int num, int tipo) { Graphics g = GArbol.CreateGraphics(); if (iPosX >= 1)//grafico de la linea { g.DrawLine(new Pen(Color.White, 2), new Point(posX[iPosX] + 15, posY + 3), new Point(lineasX[iPosLineasX] + 15, posY - 41)); iPosLineasX++; } if (tipo == 1)//normal { g.FillEllipse(System.Drawing.Brushes.White, posX[iPosX], posY, 30, 30); if (num < -9 || num > 99) { g.DrawString("" + num, new Font("Algerian", 10, FontStyle.Bold), System.Drawing.Brushes.Black, new Point(posX[iPosX] + 4, posY + 9)); } else { g.DrawString("" + num, new Font("Algerian", 10, FontStyle.Bold), System.Drawing.Brushes.Black, new Point(posX[iPosX] + 10, posY + 9)); } } if (tipo == 2)//seleccionado { g.FillEllipse(System.Drawing.Brushes.Red, posX[iPosX], posY, 30, 30); if (num < -9 || num > 99) { g.DrawString("" + num, new Font("Algerian", 10, FontStyle.Bold), System.Drawing.Brushes.Black, new Point(posX[iPosX] + 4, posY + 9)); } else { g.DrawString("" + num, new Font("Algerian", 10, FontStyle.Bold), System.Drawing.Brushes.Black, new Point(posX[iPosX] + 10, posY + 9)); } } if (tipo == 3)//Ordenado { g.FillEllipse(System.Drawing.Brushes.Green, posX[iPosX], posY, 30, 30); if (num < -9 || num > 99) { g.DrawString("" + num, new Font("Algerian", 10, FontStyle.Bold), System.Drawing.Brushes.Black, new Point(posX[iPosX] + 4, posY + 9)); } else { g.DrawString("" + num, new Font("Algerian", 10, FontStyle.Bold), System.Drawing.Brushes.Black, new Point(posX[iPosX] + 10, posY + 9)); } } if (tipo == 4)//eliminado { g.FillEllipse(System.Drawing.Brushes.Gray, posX[iPosX], posY, 30, 30); if (num < -9 || num > 99) { g.DrawString("" + num, new Font("Algerian", 10, FontStyle.Bold), System.Drawing.Brushes.Gray, new Point(posX[iPosX] + 4, posY + 9)); } else { g.DrawString("" + num, new Font("Algerian", 10, FontStyle.Bold), System.Drawing.Brushes.Gray, new Point(posX[iPosX] + 10, posY + 9)); } iPosLineasX--; if (iPosLineasX >= 0) { g.DrawLine(new Pen(Color.Gray, 2), new Point(posX[iPosX] + 15, posY + 3), new Point(lineasX[iPosLineasX] + 15, posY - 41)); } } if (iPosX == 0 || iPosX == 2 || iPosX == 6) { posY += 70; } iPosX++; }