Я новичок в C # и разрабатываю программу, которая вычисляет, насколько большой астрономический объект будет появляться через разные телескопы и окуляры. Мой код делает все, что мне нужно, и у меня есть значение для поля зрения (FOV) и размер объекта. У меня есть изображения объектов и PNG черного круга. Черный круг должен оставаться одинакового размера, а объект должен менять размер в зависимости от поля зрения. Мне нужно иметь черный кружок над изображением объекта и иметь возможность изменять размер объекта независимо от круга.
Я пробовал иметь два графических блока с черным кружком сверху, но Windows Forms не поддерживает прозрачность в PNG, поэтому изображение объекта не отображается. Единственный способ найти прозрачность для работы - это использовать один графический блок с объектом в качестве фона и черный круг в качестве изображения или использовать изображение в качестве родителя, но тогда я не могу изменить размер объекта независимо.
//setting the image box as a parent of the black circle box
astroObjectBox.Controls.Add(fovBox);
fovBox.Location = new Point(0, 0);
fovBox.BackColor = Color.Transparent;
private void formResultFOV_Load(object sender, EventArgs e)
{
Image astroObject = Image.FromFile(objPath);
int imgWidth = Convert.ToInt32(mainFOV * astroObject.Width);
int imgHeight = Convert.ToInt32(mainFOV * astroObject.Height);
astroObjectBox.Image = astroObject;
astroObjectBox.Width = imgWidth;
astroObjectBox.Height = imgHeight;
fovBox.Image = Image.FromFile("..\\..\\..\\assets\\FOVoutline.png");
}
Вот черный круг
https://i.imgur.com/rIYz6LB.png
И вот результат при использовании изображения в качестве родителя, оно изменяет размер черного круга до высоты объекта
https://i.imgur.com/MyFXPoG.png
Есть ли способ сделать это так, чтобы либо ящики с изображениями были прозрачными, либо чтобы я мог независимо выбирать размеры изображений? Я также попробовал почти все комбинации свойств (SizeMode, Anchor, Dock).