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

Тема в разделе ".NET - WinForms", создана пользователем ilya00, 22 фев 2015.

  1. ilya00

    ilya00 Member

    Регистрация:
    13 янв 2013
    Сообщения:
    23
    Симпатии:
    0
    делаю Paint, мне надо сделать кисть (для начала), я сделал так:
    Код (C):

    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
      Размер файла:
      16,2 КБ
      Просмотров:
      3
    #1 ilya00, 22 фев 2015
    Последнее редактирование модератором: 22 фев 2015
  2. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
    какойто странный способ рисования линий
    так и должно быть, маусмув сам по себе не постоянно вызывается
     
  3. ilya00

    ilya00 Member

    Регистрация:
    13 янв 2013
    Сообщения:
    23
    Симпатии:
    0
    чем он странный? а какой вы предложите? ну правильно он вызывается когда двигаешь мышкой, то что я и хочу... Paint знаете? в любой винде есть...
     
  4. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
    еще и фотошоп видел и корелдроу и еще много всяких смешных названий
    gr.FillRectangle(Brushes.Black, e.X, e.Y, 1, 1);
    что тут происходит?
     
  5. ilya00

    ilya00 Member

    Регистрация:
    13 янв 2013
    Сообщения:
    23
    Симпатии:
    0
    закрашивание конкретного пикселя... вы читайте внимательнее первый пост, я же писал об этом... я не нашел нормального метода аля SetPixel у Graphics, но это не суть, меня больше интересует чтобы линия была непрерывная
     
  6. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
    а я вам что написал? винда это не система реального времени, маусмув не вызывается постоянно, грубо говоря над каждым пикселем
    оттого и у вас рваная, что когда медленно то успевает, иначе как повезет
     
    2 пользователям это понравилось.
  7. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
    Код (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;
    }
     
    вот накидал типа код, посмотрите как он работает
     
    #7 -master-, 23 фев 2015
    Последнее редактирование модератором: 23 фев 2015
  8. ilya00

    ilya00 Member

    Регистрация:
    13 янв 2013
    Сообщения:
    23
    Симпатии:
    0
    а вот это уже интересно :)

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

    Вложения:

    • скрин.png
      скрин.png
      Размер файла:
      94,6 КБ
      Просмотров:
      4
  9. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
  10. ilya00

    ilya00 Member

    Регистрация:
    13 янв 2013
    Сообщения:
    23
    Симпатии:
    0
    да потому что я специально поставил 10 размер пера, так лучше видно прерывистость, выберите также и у вас будет также... а на стандартном размере 1 и у меня все нормально...
     
  11. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
    зачем?
    я вижу что никакой прерывистости нет, как по коду так и по картинке
     
  12. ilya00

    ilya00 Member

    Регистрация:
    13 янв 2013
    Сообщения:
    23
    Симпатии:
    0
    вы мой скрин из 8 сообщения смотрели вообще? у меня есть прерывистость !
     
  13. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
    http://gyazo.com/e63b6d9e044513afcb5cc15f993c2ee9

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

    ilya00 Member

    Регистрация:
    13 янв 2013
    Сообщения:
    23
    Симпатии:
    0
    ну тогда помогите мне сделать чтобы не было разрывов, я ведь собственно поэтому и спрашивал... у вас я тоже вижу разрывы, хотя и меньше чем у меня... попробуйте делать побольше изгибов, у меня именно на изгибах основное количество разрывов
    з.ы. вы в курсе что можно изображения прямо на форум заливать? :lol:
     
  15. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
    на изгибах не рвется а ломается, сделайте не 10 а 50 и будет гирлянда, но без разрывов, по центру всегда будет закрашено
    как плавно - не знаю, не занимаюсь таким, надо инет рыть

    мне так проще, в 1 клик все делается
     
  16. ilya00

    ilya00 Member

    Регистрация:
    13 янв 2013
    Сообщения:
    23
    Симпатии:
    0
    в обычном то паинте такого нет :( даже при большом размере кисти...

    ну значит вопрос остается открытым :(
     
  17. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
  18. ilya00

    ilya00 Member

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

    Вложения:

    • скрин.png
      скрин.png
      Размер файла:
      25,3 КБ
      Просмотров:
      5
    #18 ilya00, 23 фев 2015
    Последнее редактирование модератором: 23 фев 2015
Загрузка...
Похожие Темы - Рисование плавной линии
  1. vladden
    Ответов:
    1
    Просмотров:
    1.842
  2. 123456789igor
    Ответов:
    1
    Просмотров:
    1.394
  3. sergg
    Ответов:
    11
    Просмотров:
    4.697
  4. bearpaw
    Ответов:
    6
    Просмотров:
    3.774
  5. ezus
    Ответов:
    3
    Просмотров:
    4.885

Поделиться этой страницей