Перейти к содержимому

Как закрасить фигуру в c

  • автор:

Практическое руководство. Заливка фигуры сплошным цветом

Чтобы заполнить фигуру сплошным цветом, создайте объект 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#?

iisz4nfynusx.jpg

Проще всего чередовать рисование чёрным и белым — нарисовать чёрный полукруг, потом 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#

  • 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: Как залить фигуру без мучений?

Как правило если сложная форма то долгий анализ.
Я разделяю на несколько участков, внвчале выбираю маленький затем продолжаю выбор остальных. Как правило остальные выбираются практически мнгновенно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *