Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Метод .Line... - толщина? Добавлено: 04.10.06 22:21  

Автор вопроса:  -АлександР- | Web-сайт: sham.clan.su
Привет всем!
Снова я... и снова Line :)
Как можно для линии приделать толщину, чтобы попроще было?
Я пытался несколько линий параллельно сделать рядышком, как будто - это одна толстая. Но получилось громоздкое решение, даже басик тормозит.

Может, кто-нибудь пытался когда-нибудь приделать толщину .Line? Или какие-нибудь идеи получше будут?
Заранее благодарен!

Ответить

  Ответы Всего ответов: 15  

Номер ответа: 1
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #1 Добавлено: 04.10.06 22:45
Сори, совсем забыл про контрол-линию за работой :(

Попробуй свойство DrawWidth увеличить, вроде оно как раз за ширину рисуемых деталей отвечает.

Ответить

Номер ответа: 2
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #2
Добавлено: 04.10.06 23:01
Оп-ля... Снимаю шляпу и низко кланяюсь! Работает!
Стыдно, я о DrawWidth узнал однажды только потому, что объявил под этим именем переменную. :) даже не знал, зачем оно нужно.
Спасибо, Brand!
Кстати, если хочешь - договаривайся с админ., я дам тебе 100 рейтинга

Ответить

Номер ответа: 3
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #3 Добавлено: 04.10.06 23:27
Кстати, если хочешь - договаривайся с админ., я дам тебе 100 рейтинга

бгагагаа... падстолом
ps и за меня там договорись )))))

можно нарисовать пару или болье линий, сместив каждую на x(1,2)=x(1,2)-1 и с y аналогично...

Ответить

Номер ответа: 4
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #4
Добавлено: 05.10.06 04:59
можно нарисовать пару или болье линий, сместив каждую на x(1,2)=x(1,2)-1 и с y аналогично...

Гениально, особенно если линии идут по диагонали :)

Ответить

Номер ответа: 5
Автор ответа:
 astoro



ICQ: 649109 

Вопросов: 31
Ответов: 391
 Профиль | | #5 Добавлено: 05.10.06 06:57
Если линии вертикальные и горизонтальные можно еще прямоугольниками закрашенными рисовать

Ответить

Номер ответа: 6
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #6
Добавлено: 05.10.06 20:25
можно нарисовать пару или болье линий, сместив каждую на x(1,2)=x(1,2)-1 и с y аналогично...
На самом деле я так и пытался когда-то и столкнулся с именно этой проблемой
Гениально, особенно если линии идут по диагонали :)
Пришлось выпабатывать алгоритм параллельности прямых, да такой громоздкий что-то он получился... (если кто занет, как сделать как-нибудь просто, скажите)
Но это тоже не всё - если изображение масштабировать, то - нужно количество этих линий менять.. вобщем так неудобно, ах!..

Ответить

Номер ответа: 7
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #7
Добавлено: 05.10.06 20:27
Эх... :(
Совет Brand'а оказался тоже не панацеей. Он ведь для всех линий в контейнере меняет толщину, а нужно, чтобы для каждой отдельно можно было этим управлять

Ответить

Номер ответа: 8
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #8 Добавлено: 05.10.06 20:53
ну... а в чем пробелма?
Перед рисованием каждой линии ставь свойство DrawWidth.

Ответить

Номер ответа: 9
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #9 Добавлено: 05.10.06 20:53
ну... а в чем пробелма?
Перед рисованием каждой линии ставь свойство DrawWidth.

Ответить

Номер ответа: 10
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #10
Добавлено: 05.10.06 22:43
Да вобщем-то идея хорошая... Но у меня тут как говорится свои замуты: я поставил линию на timer вместо autoredraw (чтобы каждая нарисованная линия - имела свой таймер и через несколько долей секунды перерисовывалась.). И таким образом у меня получается, что каждая линия принимет ту толщину drawwidth, которую я ставлю ей в этот момент.

Ответить

Номер ответа: 11
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #11
Добавлено: 05.10.06 22:46
Кстати, может кто-нибудь подскажет идею, как можно по другому заменить autoredraw? (не таймером)

Ответить

Номер ответа: 12
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #12 Добавлено: 05.10.06 23:42
Кстати, может кто-нибудь подскажет идею, как можно по другому заменить autoredraw? (не таймером)


Смысл в том, что нужно рисовать не на контексте окна, а на контексте картинки, а саму картинку вставить на нужные тебе контрол.
Получается, ты рисуешь на картинке которая находится в памяти.

Я не уверен что это будет просто реализовать средствами GDI, но могу рассказать как это делается в .NET.

Ответить

Номер ответа: 13
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #13
Добавлено: 05.10.06 23:59
Я не уверен что это будет просто реализовать средствами GDI, но могу рассказать как это делается в .NET.
Я всё это и замутил только потому что .Net не поддеоживает элемент Line. Решил нго сделать искусственно так, чтобы этот как бы алгоритм (или идею) можно было воплотить в .Net.
Так что буду признателен

Ответить

Номер ответа: 14
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #14 Добавлено: 06.10.06 02:13
Создаем Bitmap и связываем его с нашим контролом:

Dim Bmp As New Bitmap(Me.ClientSize.Width, Me.ClientSize.Height)


Далее связываем его с формой:

Me.BackgroundImage = Bmp


После этого можем создать Graphics ассоциированый с нашей картинкой и рисовать на нем что угодно:

Dim Gr As Graphics = Graphics.FromImage(Bmp)
Gr.DrawLine(Drawing.Pens.AliceBlue, 0, 0, 20, 30)


Вот в принципе и все.

Ответить

Номер ответа: 15
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #15
Добавлено: 06.10.06 19:02
Спасибо, Brand! Для VBNet - классно, впрочем для vb6 я тоже сделал.
Благодарю всех за помощь!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам