Я пытаюсь создать набор прямоугольников на изображении. Чтобы достичь этого, я вызываю метод, который присутствует в отдельном классе (потому что несколько форм должны вызывать эту функцию.) Допустим, у меня есть форма A и форма B, которые обе должны нарисовать указанный набор прямоугольников:
Из формы A он работает просто отлично, из формы B он ничего не рисует, но и не возвращает исключение.
Чтобы убедиться, что я ничего не пропустил, я зашел так далеко, что скопировал и вставил вызовы функций из обеих форм, чтобы они оба были идентичными. Я также трижды проверил любые семантические ошибки, но не смог их найти.
Вызов функции из формы A выглядит следующим образом:
private void PbPreview_Click(object sender, EventArgs e)
{
if (NewPage) //This bool is true when the user is displaying a new page(Image)
{
StartingY = MousePosition.Y - 76; //Save the Y position of the click in a float variable
Form1.MainController.DrawRect(StartingY, PbPreview.Image); //Function call
NewPage = false; //Set the new Page bool to false to prevent overdrawing
}
}
Вызов функции из формы B выглядит следующим образом:
private void PbFactuur_Click(object sender, EventArgs e)
{
if (NewPage) //Same use as the NewPage bool from above
{
MouseY = MousePosition.Y - 76; //Saving mouse position
Form1.MainController.DrawRect(MouseY, PbFactuur.Image); //Function call
NewPage = false; //Set new page to false to prevent overdrawing
MessageBox.Show("I have executed the function"); //Debug info
}
}
А вот код, который присутствует в функции:
public void DrawRect(float Ypos, Image DrawSubject)
{
try
{
foreach (Rectangle R in Form1.nieuwBedrijf.Rects)
{
Rectangle TempRect = R;
TempRect.Y = Convert.ToInt32(Ypos);
Graphics G = Graphics.FromImage(DrawSubject);
G.DrawRectangle(Pens.Black, TempRect.X * Form1.nieuwBedrijf.ScaleX, TempRect.Y * Form1.nieuwBedrijf.ScaleY, TempRect.Width * Form1.nieuwBedrijf.ScaleX, 1920);
}
}
catch
{
MessageBox.Show("No rectangles have been defined yet.");
}
}
Sidenote: Rects - это список пользовательских прямоугольников.
Ожидаемым результатом будет то, что в месте, где пользователь нажимает, появится набор прямоугольников. Но на самом деле ничего не появляется вообще.
Приложение не возвращает никаких сообщений об ошибках, и с помощью точек останова и ящиков сообщений я смог убедиться, что функция действительно выполняется.
Надеюсь, кто-нибудь сможет указать мне на потенциальное решение этой проблемы.
Большое спасибо заранее
~ Melvin