winforms 要拉伸的标签图像模式

g0czyy6m  于 2022-11-25  发布在  其他
关注(0)|答案(4)|浏览(136)

我写了这段代码来添加我的Labels

JArray a = JArray.Parse(temp);
Label[] labels = new Label[100];
foreach (JObject o in a.Children<JObject>())
{
    foreach (JProperty p in o.Properties())
    {
        string name = p.Name;
        string value = p.Value.ToString();
        if (name == "name")
        {
            labels[counter] = new Label();
            //Image i = Image.FromFile("item.jpg");
            labels[counter].Text = value;
            labels[counter].Image =Image.FromFile("item.jpg");
            //labels[counter].Image
            //labels[counter].BackColor = Color.Blue;
            labels[counter].TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            labels[counter].Top = height;      
            height += 50;
            Controls.Add(labels[counter]);
        }
    }
}

Image应该拉伸到Label大小。我该怎么做?

eagi6jfj

eagi6jfj1#

显示和操作图像和文本的能力以一种相当狂野的方式分布在Winforms控件中。

  • 一个Label不能拉伸它的Image
  • 一个PictureBox和一个Panel可以,但它们不显示它们的Text
  • 一个Button可以做到这两点,但将永远是一个Button,无论你如何风格。

因此,要获得组合,您需要或者所有者绘制:

  • 重载中的DrawImage以获得正确的图像大小,然后将Image添加到Label
  • 或者将DrawStringText放到Panel上,以便在图像旁边显示
    或者您可以将两个控件与适当的能力结合起来:

您可以创建一个Panel并将其BackgroundImage设置为Image和BackgroundImageLayout=Stretch。然后您可以将设置了Text的Label添加到Panel的控件集合中:

// preparation for testing:
Image image = Image.FromFile("D:\\stop32.png");
Size size = new Size(77, 77);

// create the combined control
// I assume your Label is already there
Panel pan = new Panel();
pan.Size = size;
// or, since the Label has the right size:
pan.Size = label.Size;  // use Clientsize, if borders are involved!
pan.BackgroundImage = image;
pan.BackgroundImageLayout = ImageLayout.Stretch;
label.Parent = pan;  // add the Label to the Panel
label.Location = Point.Empty;
label.Text = "TEXT";
label.BackColor = Color.Transparent;

// add to (e.g.) the form
pan.Parent = this;

根据需要设置边框..
还有一个选择:如果所有Images的大小都相同,并且256x256像素或更少,您可以将它们添加到ImageList。这将以一种非常简单的方式将它们拉伸到ImageList.ImageSize,然后您可以将它们添加到您的Label

2lpgd968

2lpgd9682#

很简单:
VB语言

Label1.Image = New Bitmap(Image.FromFile("Screenshot.jpg"), Label1.Size)

C#语言

Label1.Image = new Bitmap(Image.FromFile("Screenshot.jpg"), Label1.Size);
ivqmmu1c

ivqmmu1c3#

如果您使用的是WinForms,请尝试以下操作:

labels[counter].Size = 
    new Size(labels[counter].Image.Width, labels[counter].Image.Height);
mum43rcc

mum43rcc4#

这非常适合我:

  • 只需在设计模式中设置图像(不使用图像列表),使用“图像”选项
  • 如果我们把label 1作为我们想要放置图像的标签,那么把下一行放在构造函数中:

标签1.图像=新位图(标签1.图像,标签1.大小);

我尝试Zibri的解决方案,但在我的情况下变形的图像。

相关问题