Рисование плавной линии

  • Автор темы ilya00
  • Дата начала
I

ilya00

делаю Paint, мне надо сделать кисть (для начала), я сделал так:
Код:
public Graphics gr;

public Form1()
{
    InitializeComponent();
    gr = this.pictureBox1.CreateGraphics();
}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        gr.FillRectangle(Brushes.Black, e.X, e.Y, 1, 1);
    }
}
рисует, но когда начинаешь слишком быстро двигать мышкой линия становится прерывистой, как этого избежать?

з.ы. кстати не нашел что то нормального метода для рисования точки, только вот такой способ в интернете нарыл, может все таки есть?
 

Вложения

  • скрин.png
    скрин.png
    4,3 КБ · Просмотры: 643
Последнее редактирование:
M

-master-

какойто странный способ рисования линий
так и должно быть, маусмув сам по себе не постоянно вызывается
 
I

ilya00

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

-master-

еще и фотошоп видел и корелдроу и еще много всяких смешных названий
gr.FillRectangle(Brushes.Black, e.X, e.Y, 1, 1);
что тут происходит?
 
I

ilya00

gr.FillRectangle(Brushes.Black, e.X, e.Y, 1, 1);
что тут происходит?
закрашивание конкретного пикселя... вы читайте внимательнее первый пост, я же писал об этом... я не нашел нормального метода аля SetPixel у Graphics, но это не суть, меня больше интересует чтобы линия была непрерывная
 
M

-master-

а я вам что написал? винда это не система реального времени, маусмув не вызывается постоянно, грубо говоря над каждым пикселем
оттого и у вас рваная, что когда медленно то успевает, иначе как повезет
 
  • Нравится
Реакции: ilya00
M

-master-

C++:
int __x = 0, __y = 0;
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
	if (__x == 0)
	{
		__x = e.X;
		__y = e.Y;
	}
	if (e.Button == System.Windows.Forms.MouseButtons.Left)
	{
		pictureBox1.CreateGraphics().DrawLine(new Pen(Brushes.Black), e.X, e.Y, __x, __y);
	}
	__x = e.X;
	__y = e.Y;
}
вот накидал типа код, посмотрите как он работает
 
Последнее редактирование:
I

ilya00

а я вам что написал? винда это не система реального времени, маусмув не вызывается постоянно, грубо говоря над каждым пикселем
оттого и у вас рваная, что когда медленно то успевает, иначе как повезет
а вот это уже интересно :)

вот накидал типа код, посмотрите как он работает
чуть лучше, но все равно прерывисто :(
 

Вложения

  • скрин.png
    скрин.png
    46,2 КБ · Просмотры: 581
M

-master-

что-то у вас не то. вот то что у меня
link removed
 
I

ilya00

что-то у вас не то. вот то что у меня
link removed
да потому что я специально поставил 10 размер пера, так лучше видно прерывистость, выберите также и у вас будет также... а на стандартном размере 1 и у меня все нормально...
 
M

-master-

зачем?
я вижу что никакой прерывистости нет, как по коду так и по картинке
 
M

-master-

link removed

то что у вас это уже вопросы к технике рисования, может не дроулайн надо а другое или еще чего
код смотрите, где там разрывы?
[DOUBLEPOST=1424672781,1424672669][/DOUBLEPOST]или рисовать точками, но аппроксимировать предварительно, вощем это уже другая история
 
I

ilya00

то что у вас это уже вопросы к технике рисования, может не дроулайн надо а другое или еще чего
код смотрите, где там разрывы?
ну тогда помогите мне сделать чтобы не было разрывов, я ведь собственно поэтому и спрашивал... у вас я тоже вижу разрывы, хотя и меньше чем у меня... попробуйте делать побольше изгибов, у меня именно на изгибах основное количество разрывов
з.ы. вы в курсе что можно изображения прямо на форум заливать? :lol:
 
M

-master-

на изгибах не рвется а ломается, сделайте не 10 а 50 и будет гирлянда, но без разрывов, по центру всегда будет закрашено
как плавно - не знаю, не занимаюсь таким, надо инет рыть

з.ы. вы в курсе что можно изображения прямо на форум заливать?
мне так проще, в 1 клик все делается
 
I

ilya00

на изгибах не рвется а ломается, сделайте не 10 а 50 и будет гирлянда, но без разрывов, по центру всегда будет закрашено
в обычном то паинте такого нет :( даже при большом размере кисти...

как плавно - не знаю, не занимаюсь таким, надо инет рыть
ну значит вопрос остается открытым :(
 
M

-master-

так пробуйте, впрочем про это вам уже советовали, и забанили :)
 
I

ilya00

так пробуйте, впрочем про это вам уже советовали, и забанили
знаете сколько у меня времени ушло чтобы разбаниться? одна минута :lol: куки почистить, 10minutmail.com, генератор ников... и все ок :bravo: просто не стал палить новый ник тем же вопросом :lol:
советуют всякую хрень, не понимая что требуется и еще удивляются почему люди раздражаются на таких... вот что получилось из того кода, не думаю что это то что нужно... ибо еще хуже чем ваш вариант
 

Вложения

  • скрин.png
    скрин.png
    6,5 КБ · Просмотры: 496
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!