Практическое руководство. Заливка фигуры сплошным цветом
Чтобы заполнить фигуру сплошным цветом, создайте объект SolidBrush, а затем передайте этот объект SolidBrush в качестве аргумента одному из методов заливки класса Graphics. В следующем примере показано, как заполнить эллипс красным цветом.
Пример
В следующем коде конструктор SolidBrush принимает объект Color в качестве единственного аргумента. Значения, используемые методом FromArgb, представляют альфа- (прозрачность), красный, зеленый и синий компоненты цвета. Каждое из этих значений должно находиться в диапазоне от 0 до 255. Первое число 255 указывает, что цвет полностью непрозрачен, а второе число 255 — что красный компонент максимально интенсивен. Два нуля указывают на то, что зеленый и синий компоненты имеют интенсивность 0.
Четыре числа (0, 0, 100, 60), переданные методу FillEllipse, указывают расположение и размер ограничивающего прямоугольника для эллипса. Прямоугольник имеет левый верхний угол в точке (0, 0), ширину 100 и высоту 60.
SolidBrush solidBrush = new SolidBrush( Color.FromArgb(255, 255, 0, 0)); e.Graphics.FillEllipse(solidBrush, 0, 0, 100, 60);
Dim solidBrush As New SolidBrush( _ Color.FromArgb(255, 255, 0, 0)) e.Graphics.FillEllipse(solidBrush, 0, 0, 100, 60)
Компиляция кода
Предыдущий пример предназначен для работы с Windows Forms, и для него необходим объект PaintEventArgs e , передаваемый в качестве параметра обработчику событий Paint.
См. также
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Закрасить часть фигуры «Инь-Янь» c#?

Проще всего чередовать рисование чёрным и белым — нарисовать чёрный полукруг, потом 4 круга и внешнюю окружность. Как-то так:
private static void DrawYinYang(Graphics gr,int xctr,int yctr,int rmax,int rint,int ysmall,int rsmall) < Brush white=Brushes.White; Brush black=Brushes.Black; Pen BlackPen=new Pen(Color.Black,2*(rmax-rint)); gr.FillPie(black,xctr-rmax,yctr-rmax,2*rmax,2*rmax,-90,180); gr.FillEllipse(white,xctr-rint/2,yctr-rint,rint,rint); gr.FillEllipse(black,xctr-rint/2,yctr,rint,rint); gr.FillEllipse(white,xctr-rsmall,yctr+ysmall-rsmall,2*rsmall,2*rsmall); gr.FillEllipse(black,xctr-rsmall,yctr-ysmall-rsmall,2*rsmall,2*rsmall); double rcircle=(rmax+rint)/2.0; gr.DrawEllipse(BlackPen,(float)(xctr-rcircle),(float)(yctr-rcircle),(float)(2*rcircle),(float)(2*rcircle)); >
Если же хочется именно закрасить криволинейную фигуру, надо изучать, что такое GraphicPath, и использовать FIllRegion. Но я так не пробовал.
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Ответы на вопрос 1
Я думаю, после взгляда на это изображение, все станет ясно. 2 каплеобразные фигуры — это pie с разделением пополам и 2 круга диаметром в половину диаметра символа.
По реализации именно на C# не подскажу, им не владею.
Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- C#
- +1 ещё
Как проверять столкновение префаба и UI панели в Unity?
- 1 подписчик
- 2 часа назад
- 13 просмотров
Залить часть геометрической фигуры
Зачем это нужно: пользователю скажем, что это вид сбоку на какие-то ёмкости. Ёмкости могут быть не только прямоугольные/круглые, но и сложного сечения, отсюда и проблема.
Получить площадь замкнутого многоугольника я могу, как и вычислить условные 25% от неё. А вот дальше-то что? Примем, что у нас многоугольник выпуклый, с одним «дном». Как на картинке.
Есть мысль идти тупо по точкам внутри контура, снизу вверх и влево-вправо, пока количество залитых пикселей не будет равно 25% от площади, но на большом поле это займёт кучу времени. А Paint() вызывается довольно часто.
Ниже пример, как если-бы пользователь нарисовал фигуру и ввёл 25% заполненности (в реале заливка будет снизу вверх, я в Paint нарисовал некорректно, но смысл не меняется)
Работаю в C# WinForms .net 3.5
Как залить фигуру без мучений?
1. Если Вы в 14 или 2. Акаде, там есть штриховка SOLID (сплошная заливка)
2. вьюпорт — это видовой экран.
А еще лучше, купи хорошую книгу по Акаду и изучай.
#4 Ответ от СС 26 апреля 2003г. 19:44:17
Re: Как залить фигуру без мучений?
у меня набор штриховок от программы КредоГео и там SOLID’а нет. Что означает видовой экран.
P.S. Нету здесь такой литературы.
#5 Ответ от Vova 26 апреля 2003г. 23:28:58
Re: Как залить фигуру без мучений?
Используй команду Solid (не тип штриховки, а команда)
#6 Ответ от СС 27 апреля 2003г. 02:04:31
Re: Как залить фигуру без мучений?
не могу понять синтаксис SOLID
#7 Ответ от Vova 27 апреля 2003г. 17:28:17
Re: Как залить фигуру без мучений?
Если Автокад на русском введи _solid и нажми Enter. Команда не простая. Прямоугольные области заливает просто, для сложных форм надо поупражнятся
#8 Ответ от Ионас 29 апреля 2003г. 10:16:53
Re: Как залить фигуру без мучений?
Как правило если сложная форма то долгий анализ.
Я разделяю на несколько участков, внвчале выбираю маленький затем продолжаю выбор остальных. Как правило остальные выбираются практически мнгновенно.