Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416

Покрасить пользовательский контролл

19.05.2023, 11:35. Показов 473. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Есть пользовательский контролл
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
internal class TriangleBtn : Button
  {
    protected override void OnPaint(PaintEventArgs pevent)
    {
      GraphicsPath g = new GraphicsPath();
      float h = this.Height;
      float w = this.Width;
      PointF[] pts = new PointF[] { new PointF(w / 2, 0), new PointF(0, h), new PointF(w, h) };
      g.AddPolygon(pts);
      this.Region = new Region(g);
      base.OnPaint(pevent);
    }
  }
а когда его экземпляр окрашивается любым цветом, например, таким
C#
1
triangleBtn3.BackColor = SystemColors.ControlDark;
то по краям виден системный цвет - особенно снизу и сверху. Подскажите пожалста как поправить
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.05.2023, 11:35
Ответы с готовыми решениями:

Покрасить предложение до точки в один цвет. Покрасить повторяющиеся слова. (RichTextBox)
Приветствую всех. Подскажите, пожалуйста, как правильно реализовать покраску цвета текста до точки? У меня в приложении выводится текст...

Требуется покрасить три абзаца, которые работают отдельно, дан массив цветов, покрасить требуется используя итератор
, () { // ваш код }] <p id="text1">Text 1</p> <p id="text2">Text 2</p> <p id="text3">Text 3</p> ...

собственный контролл
Решил сделать свою кнопку-контролл. На форме нового элемента поместил Label и PictureBox. Вроде все хорошо. Но есть 2 проблемы. 1 - почему...

7
Valechka-Думай о Высоком
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,713
19.05.2023, 14:48
Почитайте Рисование элементов управления (Windows Forms .NET)

C#
1
2
3
4
5
6
7
8
public class PaintEventArgs : EventArgs, IDisposable
{
 
    public System.Drawing.Rectangle ClipRectangle {get;}
    public System.Drawing.Graphics Graphics {get;}
 
    // Other properties and methods.
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
protected override void OnPaint(PaintEventArgs e)
{
    // Call the OnPaint method of the base class.
    base.OnPaint(e);
 
    // Declare and instantiate a new pen that will be disposed of at the end of the method.
    using var myPen = new Pen(Color.Aqua);
 
    // Create a rectangle that represents the size of the control, minus 1 pixel.
    var area = new Rectangle(new Point(0, 0), new Size(this.Size.Width - 1, this.Size.Height - 1));
 
    // Draw an aqua rectangle in the rectangle represented by the control.
    e.Graphics.DrawRectangle(myPen, area);
}
Добавлено через 1 минуту
Дело кроется в вызове base.OnPaint
Он перерисовывает границы контрола.
1
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
19.05.2023, 18:57  [ТС]
Ludwig Valentin, спасибо сейчас буду изучать
0
Valechka-Думай о Высоком
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,713
19.05.2023, 20:46
Обратите внимание, где вы вызываете base.OnPaint
В начале или в конце. В конце он затрёт вашу работу.
Или можете его вообще не вызывать.
Если он не генерирует нужные вам события, конечно. Надо проверить.
0
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
21.05.2023, 14:37  [ТС]
Ludwig Valentin,
Цитата Сообщение от Ludwig Valentin Посмотреть сообщение
Дело кроется в вызове base.OnPaint
Дело кроется в знаке "-". Но знак "+" тоже необходим . . . чтобы было красиво
0
Valechka-Думай о Высоком
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,713
21.05.2023, 15:35
Цитата Сообщение от DLD Посмотреть сообщение
Дело кроется в знаке "-". Но знак "+" тоже необходим . . . чтобы было красиво
вы говорите загадками.
0
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
21.05.2023, 15:46  [ТС]
Ludwig Valentin, видите знак "-" в коде который вы привели ? . .. это для того чтобы уменьшить размеры(слева и внизу) . . . а знак "+" нужно применить чтобы уменьшить размеры сверху и слева(например, если фигура - круг или эллипс) . . . и тогда все изображение будет залито однородным цветом - если выбрать инстумент Brush а не Pen
0
Valechka-Думай о Высоком
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,713
21.05.2023, 15:48
Цитата Сообщение от DLD Посмотреть сообщение
видите знак "-" в коде который вы привели ? . .. это для того чтобы уменьшить размеры(слева и внизу) . . . а знак "+" нужно применить чтобы уменьшить размеры сверху и слева(например, если фигура - круг или эллипс) . . . и тогда все изображение будет залито однородным цветом - если выбрать инстумент Pen не а Brush
ОК, дело в границе контрола, отрисовывается ли она, я понял - разбирайтесь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.05.2023, 15:48
Помогаю со студенческими работами здесь

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

Доступ из метода класса в контролл WF
Здравствуйте, подскажите. Мне необходимо получить доступ из какого-либо метода моего класса к контроллам приложения WF. НАпример у меня в...

Возможно ли использовать контролл в консоли
Возможно как то использовать контрол в консоле? Или как запустить консоль из Windows Form?

Контролл в центре окна браузера
Здравствуйте! Есть страница на которой только контролл ввода Логина/Пароля. Как сделать, чтоб он всегда был в центре окна браузера?

Созданный контролл не появляется на форме
Доброго времени суткок. создал класс для создаия контрола, но почему-то контрол не виден на форме. не погу понять в чем проблема. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru