C# .NET Windows Form | СОЗДАЁМ PAINT НА C#
Вставка
- Опубліковано 10 лют 2025
- Привет! В сегодняшнем уроке мы сделаем подобие всем известного Paint!)
Если Вы начинающий программист, рекомендую посмотреть урок по созданию калькулятора на языке C# • C# ПЕРВАЯ ПРОГРАММА | ...
Если данное видео тебе было полезно, не забудь подписаться, для тебя это ничего не стоит, а мне приятно :))
P.s Видео в 4к будет доступно через 5-7 часов
---
Track: Sleepy Jake
Music created by Silent Partner
Watch • Sleepy Jake - Silent P...
Track: Heartland
Music created by Silent Partner
Watch • Heartland - Silent Par...
Track: Hit My Soul
Music created by Silent Partner
Watch • Hit My Soul - Silent P...
Track: Log Cabin
Music created by Silent Partner
Watch • Log Cabin - Silent Par...
Track: Harvest Time
Music created by Silent Partner
Watch • (No Copyright Music) H...
Track: Country Instrumental Music
Music created by Mixroba Studio
Watch • FREE COUNTRY INSTRUMEN...
Track: Ukulele and Harmonica Indie Music Background
Music created by Mixroba Studio
Watch • UKULELE AND HARMONICA ...
Track: Milky Way Stars [NCS Release]
Music created by Janji feat. TR
Watch • Janji feat. TR - Milky...
Track: Daisy Dukes
Music created by Silent Partner
Watch • Daisy Dukes - Silent P...
Track: Life of Riley
Music created by Kevin MacLeod
Watch • Life of Riley
⭐ Download store.payloadz...
На моменте 20:44 я сказал , что условие НЕ равно, а сам написал РАВНО, исправьте на НЕ РАВНО, иначе сохранение работать не будет! Извините за ошибку(
в 76 строке ошибка
можешь помочь?у меня не рисует и возникает ошибка в методе drawlines
Я создал простенький метод загрузки изображения в picturebox, но при рисование на загруженной фотке не работает - она обнуляется при попытке рисования.
private void button11_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.InitialDirectory = Directory.GetCurrentDirectory();
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
try
{
pictureBox1.Image = new Bitmap(openFileDialog.FileName);
}
catch
{
MessageBox.Show("Невозможно открыть выбранный файл!");
}
то есть он стирает ее при попытке нарисовать поверх. что можно придумать?
@@impraverion бро, скинешь проект?🚀❤️
Лучший! Без воды и прочего, всё понятно и не мямлит, как остальные блогеры. Дальнейшего продвижения канала💫
так же обратим внимание на высокое качество записи, аж приятно было)
Это полностью моя курсовая работа...
Ну, всмысле, у меня тема Графический редактор и тут один в один то что мне нужно, спасибо большое!)
бро, скинешь проект?🚀❤️
Пэйнт работает отлично и делает с прозрачным фоном. Спасибо автору
отличный разбор программы, ничего лишнего и все понятно из объяснений
Чувак, огромное спасибо тебе! Теперь я смогу лабу сделать, красавчик. Хочется правда ещё модернизировать, но это уже мои заскоки
Спасибо автору без воды и все работает отлично
видео класс. все кратко и понятно. искал именно такую тему по графике. хоть я и чуть больше чем новичок в C# . было полезно. про CLASS более понял(чем от других ( но боюсь придется пересмотреть.)время ночь). была запара с 88 строчкой. в квадратных скобках [graphics.DrawLines(pen,arrayPoints.GetPoints());] после слова "PEN" поставил точку.
Тоже самое, только без Классов, проще некуда:
public partial class Form1 : Form
{
Color color = Color.Black;
Bitmap bmp = null;
Graphics graphics;
Pen pen;
bool firstPress = false;
bool draw = false;
Point p1, p2; // Важно завести глобальные точки
public Form1()
{
InitializeComponent();
bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
pen = new Pen(color);
pen.StartCap = LineCap.Round;
pen.EndCap = LineCap.Round;
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
if (draw)
{
draw = false;
using (graphics = Graphics.FromImage(bmp)) // использование using уменьшает количество используемой памяти
{
graphics.DrawLine(pen, p1, p2);
p1 = p2; // Чтобы линия повторяла курсор мыши
}
pictureBox1.Image = bmp;
}
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
firstPress = true;
p1 = e.Location;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (firstPress)
{
p2 = e.Location;
draw = true;
pictureBox1.Invalidate();
}
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
firstPress = false;
}
}
Братан, у меня LineCap.Round подсвечивается красным, типо имени нет, что делать?
@@extremely8018 VisualStudio подскажет что нужно подключить, мышку придержи просто на ошибке.
cпасибо за видеоурок!
Парень, спасибо тебе большое. Я сам люблю создавать клеточные автоматы в винформах, ну и собственно там надо расставлять клетки.. и я хз, но я тогда чёт не допер, как сделать чтоб можно было мышку зажать и водить ей рисуя клетки, и приходилось на каждую клетку собственно тыкать.. хотя конечно довольно простое решение просто булевую переменную добавить, которая бы показывала зажата ли мышка.. ну бывают у меня тупняки конечно..
Спасибо большое!🔥
Классный видеоурок.Полезный
Ты конечно молодец(но много вещей не понятно 4 из 5 лучший(Лайк оставил))
🔥🔥🔥
Красавчик!!!
Подскажите пожалуйста, как мне не очищать picturebox перед рисованием? У меня просто там программно отрисовываются графики и потом мне нужно на них рисовать мышкой
это гениально....
I ❤paint(all rights reserved)(trademark)
Идея для нового урока: связка Panel и PictureBox для изображений больше размеров экрана. Как продолжение этого урока.
супер!)
лучший!
Создал программу где цикл for рисует вертикальные линии , а второй цикл рисует горизонтальные линни и объединил два в один метод . Почему-то метод рисует набор вертикальных рисует хорошо , а набор горизонтальных линий не рисует . Не могу понять в чем дело ? Вертикальные линии есть , горизонтальные лини не прорисовываются . Ваш урок для меня очень интересен - пытаюсь написать ваш редактор .
неплохо, но есть одно но: я реализовал очистку таким же способом у себя и почему то после того как я нажимаю очистить у меня выделяется дополнительная память, хотя по идее она должна наоборот освобождаться🤔
Чувак, тут очистка реализована просто заполнением памяти. Вот ты нарисовал линию, а функция очистки зарисовывает все поле одним цветом, т е одна линия на другую накалдывается тем самым закрашивая или очищая, как нравится
Прошёл год но отвечу... Для начала два чела сверху мелят херню, на самом деле это визуально проводник показывает что у тебя заполняется память по если ты очистишь бокс 4 - 5 раз то ты заметишь что память выше не поднимается то есть остаётся максимум 26 мегабайт так что вот так вот...
@@ShadVert да уже не актуально. Мне таску в унике надо было делать, вот видос твой смотрел. Если интересно что получилось, (Ютуб ссылку не даёт вставить сюда) отпиши мне куда-нибудь, я скину репу
@@leinadalien, я не являюсь автором канала так что видос не мой.
Спасибо большое
Народ , как починить то что у меня новая линия начинается из предыдущей?
{
Index = 0;
}
@evgeni3488 в любой точке кода?
Привет, можешь сделать уроки по созданию векторного графического редактора, с нормальным интерфейсом, возможностью изменять цвета, на с#?
У меня панель Выбор толщины устанавливается выше панели цвета.
А еще у меня не сохраняется файл.
ты не видишь? автор комментарий написал:
На моменте 20:44 я сказал , что условие НЕ равно, а сам написал РАВНО, исправьте на НЕ РАВНО, иначе сохранение работать не будет! Извините за ошибку(
@@daniilkams и че?все равно не робит
@@maximleo1904тебе вместо == надо поставить !=
Бро он у меня не сохраняет я не понимаю в чём дело(
все еще нужна помощь?
у кого нибудь есть готовый код? можете скинуть?
Добрый день! Но будет ли урок о том, как создать свой собственный VST-синтезатор на C#?
с чего это "но"?
Hi, can you post the whole code in the comments?
Сам пиши, так лучше запомнишь
Хелп, у меня линия рисует неотрывно, даже если выбирать другой цвет. Что я могла упустить? 🥲
нужна твоя помощь🙏🏻
скинешь проект?🚀❤️
Привет ты решил проблему?
@@BroVaduxa777 какой проект?)
@@lukaviann этот с пеинтом, уже не нужно, благодарю❤️😌
Привет! Могу ли я с тобой связаться?
Здравствуйте, а можете подсказать как сделать ластик? Мне нужно для курсовой работы
Если ещё актуально, я сделал ластик так:
pen.Color = pictureBox1.BackColor;
проще говоря я нажимая на кнопку "ластик", присваиваю кисти, цвет заднего фона редактируемого полотна.
можно пожалуйста готовый файл ?
Почему у меня рисуется одной линеей?
Все отлично, но у меня почему-то не сохраняется результат, а в целом конструктивно
бро, скинешь проект?🚀❤️
@@BroVaduxa777 он утерен.
Идеально, но что-то не так (не рисует)
Здравсвтуйте! У меня пишет что Имя "colorDialog1" не существует в текущем контексте
Ты не поместил colorDialog на форму. 16:50
Может есть у кого код этот? Срочно нужно
private void pictureBox2_MouseMove(object sender, MouseEventArgs e)
{
if (!isMouse) { return; }
arrayPoints.SetPoint(e.X, e.Y);
if (arrayPoints.GetCountPoints() >= 2)
{
graphics.DrawLines(pen, arrayPoints.GetPoints());
pictureBox1.Image = map;
arrayPoints.SetPoint(e.X, e.Y);
}
}
Выдаёт ошибку CS0122