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

13.01.2013
23
0
#1
делаю 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);
    }
}
рисует, но когда начинаешь слишком быстро двигать мышкой линия становится прерывистой, как этого избежать?

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

Вложения

Последнее редактирование модератором:

-master-

Well-Known Member
14.01.2012
616
20
#2
какойто странный способ рисования линий
так и должно быть, маусмув сам по себе не постоянно вызывается
 
13.01.2013
23
0
#3
какойто странный способ рисования линий
так и должно быть, маусмув сам по себе не постоянно вызывается
чем он странный? а какой вы предложите? ну правильно он вызывается когда двигаешь мышкой, то что я и хочу... Paint знаете? в любой винде есть...
 

-master-

Well-Known Member
14.01.2012
616
20
#4
еще и фотошоп видел и корелдроу и еще много всяких смешных названий
gr.FillRectangle(Brushes.Black, e.X, e.Y, 1, 1);
что тут происходит?
 
13.01.2013
23
0
#5
gr.FillRectangle(Brushes.Black, e.X, e.Y, 1, 1);
что тут происходит?
закрашивание конкретного пикселя... вы читайте внимательнее первый пост, я же писал об этом... я не нашел нормального метода аля SetPixel у Graphics, но это не суть, меня больше интересует чтобы линия была непрерывная
 

-master-

Well-Known Member
14.01.2012
616
20
#6
а я вам что написал? винда это не система реального времени, маусмув не вызывается постоянно, грубо говоря над каждым пикселем
оттого и у вас рваная, что когда медленно то успевает, иначе как повезет
 

-master-

Well-Known Member
14.01.2012
616
20
#7
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;
}
вот накидал типа код, посмотрите как он работает
 
Последнее редактирование модератором:
13.01.2013
23
0
#8
а я вам что написал? винда это не система реального времени, маусмув не вызывается постоянно, грубо говоря над каждым пикселем
оттого и у вас рваная, что когда медленно то успевает, иначе как повезет
а вот это уже интересно :)

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

Вложения

13.01.2013
23
0
#10
что-то у вас не то. вот то что у меня
Чтобы видеть этот контент необходимо: Войти или зарегистрироваться
да потому что я специально поставил 10 размер пера, так лучше видно прерывистость, выберите также и у вас будет также... а на стандартном размере 1 и у меня все нормально...
 

-master-

Well-Known Member
14.01.2012
616
20
#11
зачем?
я вижу что никакой прерывистости нет, как по коду так и по картинке
 

-master-

Well-Known Member
14.01.2012
616
20
#13
Чтобы видеть этот контент необходимо: Войти или зарегистрироваться


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

-master-

Well-Known Member
14.01.2012
616
20
#15
на изгибах не рвется а ломается, сделайте не 10 а 50 и будет гирлянда, но без разрывов, по центру всегда будет закрашено
как плавно - не знаю, не занимаюсь таким, надо инет рыть

з.ы. вы в курсе что можно изображения прямо на форум заливать?
мне так проще, в 1 клик все делается
 
13.01.2013
23
0
#16
на изгибах не рвется а ломается, сделайте не 10 а 50 и будет гирлянда, но без разрывов, по центру всегда будет закрашено
в обычном то паинте такого нет :( даже при большом размере кисти...

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

Вложения

Последнее редактирование модератором: