I wrote this code to add my 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]);
}
}
}
The Image
should stretch to the Label
Size. How can I do this?
public void CreateMyLabel() { // Create a new label and create a bitmap. Label label1 = new Label(); Image image1 = Image. FromFile("c:\\MyImage. bmp"); // Set the size of the label to accommodate the bitmap size.
The abilities to show and manipulate images and text are spread out in a rather wild fashion among Winforms
controls.
Label
can not stretch its Image
.PictureBox
and a Panel
can but they don't show their Text
Button
can do both but will always be a Button
, no matter how you style it..So to get a combination you will need to either owner-draw something:
DrawImage
in an overload to get the right size of the image, then add Image
to Label
DrawString
the Text
onto a Panel
to show it alongside the Imageor you could combine two controls with the right abilities:
You can create a Panel
and set its BackgroundImage
to your Image and its BackgroundImageLayout=Stretch
. Then you can add your Label
with its Text set to the Panel
's controls collection:
// 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;
Set Borders as you like..
One more option: If all Images
should have the same Size and if it is 256x256
pixels or less you could add them to an ImageList
. This will stretch them to the ImageList.ImageSize
in a very simple way and you can add them to your Label
..
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With