Bakhos Sayssouk Ответов: 2

нарисуйте круг заливки на PictureBox


в моем проекте я должен при нажатии на звезду показывать имя звезды. раствор звезды нарисовать на PictureBox и их рисовать этот элемент управления PictureBox .и когда я нажимаю на звезду я нажмите кнопку в PictureBox(объекта) и показать имя.
Н. б.: я должен нарисовать более 1000 звезд. для каждой звезды я хочу показать свое имя.

CHill60

В этом нет особого смысла. Что вы пробовали и в чем проблема?

2 Ответов

Рейтинг:
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 миллиардах вселенных. Конечно, это нормально, если я использую некоторые графические коробки и этикетки для отображения этого?

Bakhos Sayssouk

как**

Рейтинг:
2

avisal

или графика g = pictureBox1. CreateGraphics();
и т.д.