2015-05-01 2 views
1

Я написал этот код, чтобы добавить мой 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 Size. Как я могу это сделать?

ответ

5

Способность, чтобы показать и манипулировать изображения и текст разложены в довольно диком моды среди Winforms контроля.

  • A Label не может растянуть свой Image.
  • PictureBox и Panel могут, но они не показывают их Text
  • Button может сделать оба, но всегда будет Button, независимо от того, как вы его стиль ..

Так, чтобы получить сочетание вы должны либо владелец нарисовать что-то:

  • DrawImage в перегрузке, чтобы получить правильный размер изображения, а затем добавить Image к Label
  • Или DrawStringText на Panel, чтобы показать его вместе с Image

или можно объединить два элемента управления с нужными способностями:

Вы можете создать Panel и установить его BackgroundImage к вашему изображению и его BackgroundImageLayout=Stretch. После этого вы можете добавить свой Label с текстом, установленным в коллекцию элементов управления Panel «s:

// 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 ..

0

Если вы используете WinForms вы пытаетесь попробовать ниже:

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

Джек с кодом мой ярлык изменения размера к размеру изображения, но я хочу, чтобы мой размер изображения для этикетки размером –

+0

ааа, если вам нужно это другим способом, затем, пожалуйста, измените размер изображения перед назначением метки. – Jack

+0

Как изменить размер изображения? –

Смежные вопросы