public void SetImage(ZArrayDescriptor zArray) { this.imageBox.Invoke ( (MethodInvoker) delegate { Vizual.Vizual_Picture(zArray, this.imageBox); this.imageBox.Refresh(); } ); }
private void button1_Click(object sender, EventArgs e) // Построить фигуру Лиссажу по кадру { // MessageBox.Show("RegComplex = " + Form1.regComplex ); // 0, 1, 2 if (Form1.zArrayDescriptor[Form1.regComplex * 4] == null) { MessageBox.Show("Lissagu zArrayDescriptor == NULL"); return; } fz[0] = Convert.ToDouble(textBox2.Text); fz[1] = Convert.ToDouble(textBox3.Text); fz[2] = Convert.ToDouble(textBox4.Text); fz[3] = Convert.ToDouble(textBox5.Text); fz[4] = Convert.ToDouble(textBox7.Text); fz[5] = Convert.ToDouble(textBox8.Text); fz[6] = Convert.ToDouble(textBox9.Text); fz[7] = Convert.ToDouble(textBox10.Text); N_sdv = Convert.ToInt32(textBox11.Text); // Число сдвигов double[] fzrad = new double[N_sdv]; for (int i = 0; i < N_sdv; i++) { fzrad[i] = Math.PI * fz[i] / 180.0; } // Фаза в радианах int w1 = Form1.zArrayDescriptor[Form1.regComplex * 4].width; int h1 = Form1.zArrayDescriptor[Form1.regComplex * 4].height; n = Convert.ToInt32(textBox1.Text); n_end = Convert.ToInt32(textBox6.Text); if (n < 0 || n_end > (h1 - 1)) { MessageBox.Show("n<0 || n_end>(h1-1)"); return; } ZArrayDescriptor faza = new ZArrayDescriptor(w1, h1); faza = FazaClass.ATAN_Gr(Form1.zArrayDescriptor, fzrad, Form1.regComplex, n, n_end); Vizual.Vizual_Picture(faza, pictureBox2); }
public static void Change_r(ZArrayDescriptor[] zArrayDescriptor, PictureBox pictureBox9, PictureBox pictureBox10, PictureBox pictureBox11, PictureBox pictureBox12, int X1, int X2, int X3, int X4, int Y1, int Y2, int Y3, int Y4) { for (int i = 8; i < 12; i++) { if (zArrayDescriptor[i] == null) { MessageBox.Show(" Change_r: zArrayDescriptor[" + i + "] == null"); return; } } int max_X = zArrayDescriptor[8].width; int max_Y = zArrayDescriptor[8].height; int minx = min4x(X1, X2, X3, X4); int maxx = max4x(X1, X2, X3, X4); int miny = min4x(Y1, Y2, Y3, Y4); int maxy = max4x(Y1, Y2, Y3, Y4); int rx = (maxx - minx) / 2; int ry = (maxy - miny) / 2; int rad = Math.Min(rx, ry); int x0 = minx + rad; int y0 = miny + rad; //Vizual.Vizual_Circle(zArrayPicture, pictureBox01, x0, y0, rad); // Рисование круга // Заполнение нулями за пределами круга Vizual.Vizual_Circle(zArrayDescriptor[8], pictureBox9, x0, y0, rad); Vizual.Vizual_Circle(zArrayDescriptor[9], pictureBox10, x0, y0, rad); Vizual.Vizual_Circle(zArrayDescriptor[10], pictureBox11, x0, y0, rad); Vizual.Vizual_Circle(zArrayDescriptor[11], pictureBox12, x0, y0, rad); if ((maxx - minx) % 2 != 0) { maxx++; } if ((maxy - miny) % 2 != 0) { maxy++; } int X = maxx - minx, Y = maxy - miny; int k = X / 256; X = (k + 1) * 256; // Выравниваем на границe L=256 (для фурье с четным количеством точек) k = Y / 256; Y = (k + 1) * 256; while (X + minx > max_X) { X = X - 128; } while (Y + miny > max_Y) { Y = Y - 128; } X = Math.Max(X, Y); MessageBox.Show("Реальный размер minx= " + (maxx - minx) + " miny= " + (maxy - miny) + "Рекомендованный размер = " + X + " x " + Y); ZArrayDescriptor zArray = new ZArrayDescriptor(X, X); int x00 = 0, y00 = 0; int YY = X; int XX = X; if ((X > (maxx - minx)) && (Y > (maxy - miny))) { int kx = (X - (maxx - minx)) / 2; int ky = (X - (maxy - miny)) / 2; x00 = minx - kx; if (x00 > 0) { XX = X - kx; } else { x00 = 0; } y00 = miny - ky; if (y00 > 0) { YY = X - ky; } else { y00 = 0; } // MessageBox.Show(" kx= " + kx + " x0= " + x00 + " y0= " + y00 + "X = " + X + "Y = " + Y); } XX = Math.Max(XX, YY); if (XX + x00 > max_X) { x00 = max_X - XX; } if (XX + y00 > max_Y) { y00 = max_X - XX; } //int n = 8; for (int n = 8; n < 12; n++) { for (int i = x00; i < XX + x00; i++) { for (int j = y00; j < XX + y00; j++) { zArray.array[i - x00, j - y00] = zArrayDescriptor[n].array[i, j]; } } //zArrayDescriptor[n] = zArray; zArrayDescriptor[n] = new ZArrayDescriptor(zArray); } }
/// <summary> /// Фигуры Лиссажу 3D /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button6_Click(object sender, EventArgs e) { if (checkBox1.Checked == true) { k1 = 1; } else { k1 = 0; } if (checkBox2.Checked == true) { k2 = 1; } else { k2 = 0; } if (checkBox3.Checked == true) { k3 = 1; } else { k3 = 0; } if (checkBox4.Checked == true) { k4 = 1; } else { k4 = 0; } if ((k1 + k2 + k3 + k4) != 3) { MessageBox.Show("Число флагов больше или меньше 3"); return; } // Только 3 кадра должны быть выбраны int[] kk = new int[4]; { kk[0] = k1; kk[1] = k2; kk[2] = k3; kk[3] = k4; } int kk1 = 0, kk2 = 0, kk3 = 0; // Номер 1 и второго кадров for (int i = 0; i < 4; i++) { if (kk[i] != 0) { kk1 = i; kk[i] = 0; break; } } for (int i = 0; i < 4; i++) { if (kk[i] != 0) { kk2 = i; kk[i] = 0; break; } } for (int i = 0; i < 4; i++) { if (kk[i] != 0) { kk3 = i; break; } } int w1 = Form1.zArrayDescriptor[Form1.regComplex].width; int h1 = Form1.zArrayDescriptor[Form1.regComplex].height; n = Convert.ToInt32(textBox1.Text); n_end = Convert.ToInt32(textBox6.Text); if (n < 0 || n_end > (h1 - 1)) { MessageBox.Show("n<0 || n_end>(h1-1)"); return; } ZArrayDescriptor faza = FazaClass.Lissagu3D(Form1.zArrayDescriptor, Form1.regComplex, kk1, kk2, kk3, n, n_end); Vizual.Vizual_Picture(faza, pictureBox2); //On_Liss3D(n, kk1, kk2, kk3); }
// --------------------------------------------------------------------------------------------------- // Фигуры Лиссажу по y 1 кадр по x - 2 кадр // --------------------------------------------------------------------------------------------------- private void button4_Click(object sender, EventArgs e) { if (checkBox1.Checked == true) { k1 = 1; } else { k1 = 0; } if (checkBox2.Checked == true) { k2 = 1; } else { k2 = 0; } if (checkBox3.Checked == true) { k3 = 1; } else { k3 = 0; } if (checkBox4.Checked == true) { k4 = 1; } else { k4 = 0; } if ((k1 + k2 + k3 + k4) != 2) { MessageBox.Show("Число флагов больше или меньше 2"); return; } // Только 2 кадра должны быть выбраны int[] kk = new int[4]; { kk[0] = k1; kk[1] = k2; kk[2] = k3; kk[3] = k4; } int kk1 = 0, kk2 = 1; // Номер 1 и второго кадров for (int i = 0; i < 4; i++) { if (kk[i] != 0) { kk1 = i; kk[i] = 0; break; } } for (int i = 0; i < 4; i++) { if (kk[i] != 0) { kk2 = i; break; } } fz[0] = Convert.ToDouble(textBox2.Text); fz[1] = Convert.ToDouble(textBox3.Text); fz[2] = Convert.ToDouble(textBox4.Text); fz[3] = Convert.ToDouble(textBox5.Text); fz[4] = Convert.ToDouble(textBox7.Text); fz[5] = Convert.ToDouble(textBox8.Text); fz[6] = Convert.ToDouble(textBox9.Text); fz[7] = Convert.ToDouble(textBox10.Text); //MessageBox.Show("kk1 =" + kk1 + " kk2 =" + kk2); double fzrad1 = Math.PI * fz[kk1] / 180.0; double fzrad2 = Math.PI * fz[kk2] / 180.0; int w1 = Form1.zArrayDescriptor[Form1.regComplex].width; int h1 = Form1.zArrayDescriptor[Form1.regComplex].height; n = Convert.ToInt32(textBox1.Text); n_end = Convert.ToInt32(textBox6.Text); StepI = Convert.ToInt32(textBox12.Text); // Приращение по цвету if (n < 0 || n_end > (h1 - 1)) { MessageBox.Show("n<0 || n_end>(h1-1)"); return; } ZArrayDescriptor faza = FazaClass.Lissagu(Form1.zArrayDescriptor, Form1.regComplex, kk1, kk2, n, n_end, StepI, fzrad1, fzrad2); Vizual.Vizual_Picture(faza, pictureBox2); }