我是C#的新手,他正在开发一个程序,该程序计算通过不同的望远镜和目镜将出现多少天文物体。我的代码完成了我需要的所有操作,并且我具有“视场”(FOV)和对象大小的值。我有物体的图像和黑色圆圈的PNG。黑色圆圈应保持相同大小,并且对象应根据视野改变大小。我需要在对象的图像上有一个黑色圆圈,并且能够独立于圆圈改变对象的大小。
我尝试过两个带有黑色圆圈在顶部的图片框,但是Windows窗体似乎不支持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)。