Привет, Мне дана задача превратить приложение Java в приложение формы C#. Программа отображает Mandelbrot, который затем позволяет пользователю увеличивать масштаб. Мне удалось отобразить Мандельброт и даже увеличить масштаб. Однако при перетаскивании окна для масштабирования ящик сам не показывает, то есть пользователь не может видеть, в какой области они будут масштабироваться.Рисование прямоугольника на растровом изображении (Mandelbrot)
Я считаю, что мне нужно вызвать функцию обновления, которая рисует прямоугольник при перетаскивании. Вот код, который, я считаю, имеет значение.
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
//e.consume();
if (action)
{
xs = e.X;
ys = e.Y;
}
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
int z, w;
//e.consume();
if (action)
{
xe = e.X;
ye = e.Y;
if (xs > xe)
{
z = xs;
xs = xe;
xe = z;
}
if (ys > ye)
{
z = ys;
ys = ye;
ye = z;
}
w = (xe - xs);
z = (ye - ys);
if ((w < 2) && (z < 2))
initvalues();
else
{
if (((float)w > (float)z * xy))
ye = (int)((float)ys + (float)w/xy);
else
xe = (int)((float)xs + (float)z * xy);
xende = xstart + xzoom * (double)xe;
yende = ystart + yzoom * (double)ye;
xstart += xzoom * (double)xs;
ystart += yzoom * (double)ys;
}
xzoom = (xende - xstart)/(double)x1;
yzoom = (yende - ystart)/(double)y1;
mandelbrot();
rectangle = false;
Refresh();
}
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
//e.consume();
if (action)
{
xe = e.X;
ye = e.Y;
rectangle = true;
}
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g1 = e.Graphics;
g1.DrawImage(bitmap, 0, 0, x1, y1);
g1.Dispose();
}
public void paint(Graphics g1)
{
update(g1);
}
public void update(Graphics g1)
{
Pen pen = new Pen(Color.White);
g1.DrawImage(bitmap, 0, 0, x1, y1);
if (rectangle)
{
if (xs < xe)
{
if (ys < ye) g1.DrawRectangle(pen, xs, ys, (xe - xs), (ye - ys));
else g1.DrawRectangle(pen, xs, ye, (xe - xs), (ys - ye));
}
else
{
if (ys < ye) g1.DrawRectangle(pen, xe, ys, (xs - xe), (ye - ys));
else g1.DrawRectangle(pen, xe, ye, (xs - xe), (ys - ye));
}
pen.Dispose();
}
}
Вы, ребята, в одном классе должны разговаривать друг с другом. Это дубликат вопроса, заданного вашим одноклассником: http://stackoverflow.com/questions/26721685/java-to-c-sharp-conversion-how-do-i-draw-a-rectangle-on-my-bitmap –
Я посмотрел туда, что, похоже, не помогло! –