2009-09-08 1 views
0

У меня есть список, у меня есть список, у которого есть круг, и его значение im динамически создает круг по размеру из базы данных ..... Я хочу заполнить цвет в поле «Список», где круг является ничьей из другого поля списка, где Элементы имеют цвет, такой как красный, синий, в одном элементе, выбранном в списке кругов, а затем щелкните по второму цвету списка, а затем автоматически заполните круг круглого круга круга. Максимальный цвет выбирается в списке цветных букв: 2 .. Значит, если есть два цвета, то половина - это первый цвет, а половина - второй цвет. это мое требование, может ли вы, приятель, помочь мне восстановить это, как заполнить круг цвет ...Заполните цвет в поле «Список» Круг в C# .Net в Winforms

private void Form1_Load(object sender, EventArgs e) 
{ 
    listBox1.DrawMode = DrawMode.OwnerDrawVariable; 
    listBox1.Items.Add("One"); 
    listBox1.Items.Add("Two"); 
    listBox1.Items.Add("Three"); 
    listBox1.DrawItem += new DrawItemEventHandler(listBox1_DrawItem);  
} 

void listBox1_DrawItem(object sender, DrawItemEventArgs e) 
{ 
    ListBox l=sender as ListBox; 
    e.DrawBackground(); 
    e.DrawFocusRectangle(); 
    e.Graphics.DrawEllipse(Pens.Blue, new Rectangle(1, 1+e.Index * 15, 100, 10)); 
    e.Graphics.DrawString(l.Items[e.Index].ToString(), 
      new Font(FontFamily.GenericSansSerif,9, FontStyle.Regular), 
      Brushes.Red , e.Bounds); 
} 

ответ

1

Похоже, что часть вашего вопроса, как заполнить эллипс, который выглядит следующим образом:

using (Brush fill = new Brush(...)) 
{ 
    e.Graphics.FillEllipse(fill, new Rectangle(1, 1+e.Index * 15, 100, 10)); 
} 

Я не знаю, как вы хотите использовать этот второй ListBox, это список цветных имен?


Дополнительная

Я дал ему немного попробовать:

в Form_Load,

listBox2.Items.Add(Color.Blue); 
listBox2.Items.Add(Color.Green); 
listBox2.Items.Add(Color.Red); 

в listBox1_DrawItem

Color back = Color.Black; 
if (listBox2.SelectedIndex >= 0) 
    back = (Color)listBox2.SelectedItem; 

using (Brush fill = new SolidBrush(back)) 
using (Font text = new Font(FontFamily.GenericSansSerif, 9, FontStyle.Regular)) 
{ 
    e.Graphics.FillEllipse(fill, new Rectangle(1, 1+e.Index * 15, 100, 10));  
    e.Graphics.DrawEllipse(Pens.Blue, new Rectangle(1, 1 + e.Index * 15, 100, 10)); 
    e.Graphics.DrawString(l.Items[e.Index].ToString(), text, Brushes.Red, e.Bounds); 
} 

Примечание также с помощью шаблона, вы мя Я должен сделать эту привычку.

И, наконец, в listBox2_SelectedIndexChanged

listBox1.Invalidate(); 
+0

Да, его список названий цветов – Yagnesh84

+0

спасибо, что он работает отлично большое спасибо – Yagnesh84

0

Не уверен, что я понимаю, что вы имеете в виду, но если вы хотите, чтобы нарисовать круг будет заливка цветом, а затем сделать:

e.Graphics.FillEllipse(Brushes.Blue, new Rectangle(1, 1 + e.Index * 15, 10, 10)); 

вместо DrawEllipse ,

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