标签图像模式拉伸

eln*_*ani 3 c# label image winforms

我写了这段代码来添加我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]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Image应延伸到的Label大小.我怎样才能做到这一点?

TaW*_*TaW 7

显示和操纵图像和文本的能力在Winforms控件之间以相当狂野的方式展开.

  • A Label不能伸展它Image.
  • A PictureBox和a Panel可以,但他们没有显示他们的Text
  • 无论你如何设计风格,A Button都能做到,但永远都是Button.

因此,要获得你需要的组合无论是所有者绘制的东西:

  • DrawImage在重载中获取正确大小的图像,然后添加ImageLabel
  • DrawStringTextPanel,以显示它旁边的图片

或者你可以将两个控制与正确的能力结合起来:

您可以创建一个Panel并将其设置BackgroundImage为您的图像及其图像BackgroundImageLayout=Stretch.然后,您可以将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;
Run Code Online (Sandbox Code Playgroud)

根据需要设置边框..

还有一个选择:如果所有都Images应该具有相同的大小,如果它是256x256像素或更少,你可以将它们添加到ImageList.这将以ImageList.ImageSize一种非常简单的方式将它们拉伸到您的位置,您可以将它们添加到您的Label..