WinForms-如何在透明的情况下将具有一定大小的图像覆盖在另一个具有不同大小的图像上?

时间:2019-05-04 21:31:31

标签: c# image winforms

我是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)。

0 个答案:

没有答案