Рейтинг:
2
OriginalGriff
Нарисовать закрашенный круг-это просто: сделать управление изображение из PictureBox и использовать метод FillEllipse :
Image i = myPictureBox.Image;
using (Graphics g = Graphics.FromImage(i))
{
g.FillEllipse(Brushes.White, new Rectangle(100, 100, 10, 10));
}
Когда вы их нарисуете, просто позвоните в myPictureBox.Признать недействительными (), чтобы отобразить их все.
Если бы я был на вашем месте, я бы создал Звездный класс, который включал бы его имя, местоположение и размер (дисплея), чтобы вы могли искать его, когда нажмете на picturebox.
Bakhos Sayssouk
нет. в один шаг(в boocle Для),я хочу создать элемент управления PictureBox(элемент управления PictureBox[] п=новый элемент управления PictureBox[я]).и рисовать на элементе управления PictureBox круг,Тхам, чтобы установить картинку.
OriginalGriff
Вы не хотите этого делать: один PictureBox на звезду?
Это все равно что нарисовать дом, нарисовав каждый кирпич на отдельном листе бумаги, а затем склеив их все вместе...
Вы хоть представляете, сколько оконных ручек это израсходует? :OMG:
Bakhos Sayssouk
или я могу нарисовать объект заполнения круга, когда я нажимаю на круг(звезду), чтобы показать имя звезды ??? Заранее спасибо.
OriginalGriff
Зависит от того, что вы используете одно поле изображения и держите каждую звезду отдельно (и держите прямоугольник, описывающий ее размер и положение относительно TLHC изображения, а также его имя), то это довольно простая операция, чтобы узнать, на какой прямоугольник звезды вы нажали из поля изображения.Щелкните обработчик событий. Тогда все, что вам нужно сделать, это показать имя из информации о звездном классе.
Bakhos Sayssouk
да, один PictureBox на звезду,у меня есть имя звезды в xml.
OriginalGriff
Не используйте один picturebox на звезду! Это действительно ужасный способ сделать это-медленный, неэффективный и способный привести к сбою вашей программы... Используйте одну коробку с картинками для них всех и нарисуйте их на ней.
Поверь мне...
Bakhos Sayssouk
ладно. но как я могу, когда нажимаю на звезду, показать имя звезды??
OriginalGriff
Это не сложно: помните, где я говорил, чтобы создать класс, который содержал бы имя местоположения и размер дисплея?
Если вы держите местоположение и размер дисплея в виде прямоугольника, вы можете использовать PictureBox.Событие MouseClick позволяет решить, в какой звезде вы находитесь, используя параметр MouseEventArgs: он предоставляет вам координаты X и Y относительно TLHC PictureBox.
Вы можете посмотреть на каждый экземпляр класса Star и использовать прямоугольник.Содержит метод проверки того, находится ли точка внутри или снаружи. Я бы добавил метод к классу Star:
public bool IsAt(int x, int y)
{
место возврата.Содержит(x, y);
}
Тогда вы знаете экземпляр Star, который содержит имя.
[no name]
Помнишь, как я хвастался своей маленькой игровой картой? У меня должно быть несколько сотен миллиардов звезд на галактику примерно в 4 миллиардах галактик примерно в 4 миллиардах вселенных. Конечно, это нормально, если я использую некоторые графические коробки и этикетки для отображения этого?