|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 513
|
||||||||||||||||
Простой Paint - Разбор полетов16.12.2018, 17:17. Показов 7293. Ответов 53
Метки нет (Все метки)
Здравствуйте, задумал я написать простой растровый графический редактор на подобии Paint.
Совершенствовать модель буду со временем, а пока начал с простых вещей. Есть несколько вопросов:
Полный текст программы Кликните здесь для просмотра всего текста
0
|
||||||||||||||||
| 16.12.2018, 17:17 | |
|
Ответы с готовыми решениями:
53
PropertyGrid разбор полетов использования
IComparer. Разбор полетов |
|
|
|
| 03.07.2019, 17:51 | |
|
Нашёл, что такое "hardness":
По нашему, это степень размытости линии карандаша (и вообще контура). Такое, конечно, средствами graphics.DrawLines() не сделать. Тут нужен другой подход, ну а какой, "будем искать (с)".Теперь о ластике. Ластик устанавливает прозрачность там, где оставлен его цвет. Так как применение действия ластика происходит, когда кнопка мыши отпускается, то используется такой механизм: 1. Пока левая кнопка не отпущена, линия ластика рисуется цветом, который выбран для ластика. 2. Когда левая кнопка отпускается, то выполняется метод doc.Layer.MakeTransparent(RibberStyle.Color);,в котором цвет ластика заменяется на прозрачный (alpha-канал устанавливается в ноль). Конечно, скажете вы, сотрётся также и цвет, который есть на картинке... Да, это так. "Многое ещё не доработано (с)". Поэтому, можно выбрать цвет ластика из тех, которых нет на картинке.Вот такое, временное решение. Репозиторий обновил.
0
|
|
|
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
|
||
| 04.07.2019, 11:14 | ||
|
0
|
||
|
384 / 184 / 107
Регистрация: 07.01.2016
Сообщений: 496
|
|
| 05.07.2019, 13:30 | |
|
0
|
|
|
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
|
||||||||||||
| 05.07.2019, 14:23 | ||||||||||||
0
|
||||||||||||
|
|
|||
| 05.07.2019, 14:51 | |||
|
По поводу альфа канала: модель редактора такая, что применение прозрачности к границам линии происходит в результирующем Image, то есть делается прозрачным и край новой линии и то, что было уже нарисовано до этого, а надо, чтобы край новой линии смешивался с предыдущим рисунком (учитывался фон). Я пробовал делать линию последовательно в этой программе: 1. Самая толстая линия (требуемой ширины) с маленьким значением альфа 2. Потом линия чуть уже и альфа канал чуть больше и т. д. то получается прозрачность добавляется ко всему контуру линии, делая прозрачным и предыдущее нарисованное. Вывод: нужно новую линию рисовать на отдельном холсте, а потом накладывать этот холст на то, что было нарисовано ранее.
0
|
|||
|
384 / 184 / 107
Регистрация: 07.01.2016
Сообщений: 496
|
||
| 06.07.2019, 07:33 | ||
|
0
|
||
|
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
|
|||||||||||
| 06.07.2019, 10:49 | |||||||||||
|
ashsvis, вот немного доработал.
Кликните здесь для просмотра всего текста
1
|
|||||||||||
|
|
|
| 12.07.2019, 18:24 | |
|
Интегрировал предложенный класс LineRenderer для проверки. Результаты не очень...
![]() Конечно, класс заточен под прямые линии, плюс - ресурсы потребляются немерено. Так что в таком виде это употребить невозможно, но, как пример - интересно. Текущее состояние смотрите в репозитории https://github.com/ashsvis/my-first-Paint
0
|
|
|
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
|
|
| 15.07.2019, 20:41 | |
|
ashsvis, я попытался сделать кисть. Вместо setpixel использовал небезопасный класс
Аналоги для GetPixel/SetPixel для расчетов использовал только те пиксели, которые попадают в зону отрисовки... Но увы, скорость очень низкая и совсем не подходит для ваших целей ![]() ну оно и понятно, для каждого пикселя рассчитать расстояние, перевести в проценты затем в значение альфа канала и все это за доли секунды - трудно..
1
|
|
|
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
|
||||||
| 27.11.2020, 22:58 | ||||||
|
ashsvis, Привет! Надеюсь, вы еще не забросили свой редактор =)
хз, почему в тот раз я привязался к линиям, но немного скорректировал класс, и оно заработало мгновенно, и это с тормозящими get/set pixel
0
|
||||||
|
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
|
|
| 27.11.2020, 23:07 | |
|
Вообще, оно и сейчас будет тормозить, если делать оочень толстую кисть.
В строка 58-59 я взял с запасом диапозон пикселей от х-tikness до х+tikness , хотя достаточно и tikness/2 Ну и get set заменить на что то приличное надо
0
|
|
| 27.11.2020, 23:07 | |
|
Разбор полетов разбор полетов, ассемблер..
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|