|
22.12.2008, 02:56
|
#1
|
AnyKey`щик
Регистрация: 22.12.2008
Сообщений: 3
Написано 0 полезных сообщений (для 0 пользователей)
|
Line
Проблема вот в чём:
начал делать проект на VB6 и в какой - то момент решил переделать его в VB.NET(Visual Studio 2005) ! Всё хоршо, однако всё тормозит отсутствие элемента Line и создание UserControla с прозрачным фоном!!!:''
Как только не пробовал - делал контрол из нарисованной на нём линии и последующей обрезкой региона по линии - получается, но тормозит графика и глюки всякие, начал пробовать с DirectX9 SDK,но мозг сопротивляется почему то восприятию такой информации:''
Товарищи,Друзья и просто Хорошие люди !!! Уже месяц немогу продвинуться дальше из-за графики. Прошу Вас !!! Нужен всего лишь контрол( или класс) ,который рисует и перерисовывает линию при изменении координат концов (аналогично контролу Line в VB6,но имеющий свойство Bring to front!)
Заранее благодарен всем , кто примет участие в решении проблемы !!!
|
(Offline)
|
|
22.12.2008, 03:29
|
#2
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Line
С VB не знаком.
Могу предложить тупой способ - рисовать линию самому (исходя из уравнения y=kx+z), но это возможно если существует возможность нарисовать точку, разумеется.
Если интересно, у меня есть аналогичный код на BlitzBasic, думаю, его нетрудно перевести на VB
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
22.12.2008, 11:27
|
#3
|
AnyKey`щик
Регистрация: 22.12.2008
Сообщений: 3
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Line
Сообщение от ABTOMAT
С VB не знаком.
Могу предложить тупой способ - рисовать линию самому (исходя из уравнения y=kx+z), но это возможно если существует возможность нарисовать точку, разумеется.
Если интересно, у меня есть аналогичный код на BlitzBasic, думаю, его нетрудно перевести на VB
|
О BlitzBasic конечно первый раз слышу, но если не трудно, всё таки выложите, может поможет чем
|
(Offline)
|
|
22.12.2008, 16:19
|
#4
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Line
Держи, тут, оказывается, даже с каментами:
Function ABLine(startX,startY,endX,endY)
Local K#,B
FuncX = EndX - StartX ; Вычисляем абсолютное направление отрезка, как бы
FuncY = EndY - StartY ; Передвигая центр координат под стартовую точку
If FuncX <> 0 K = FuncY/Float(FuncX) ; Таким образом, мы избавились от B и можем вычислить K - отношение Y к X
; Теперь, зная К, можно вычислить B, для этого изменяем алгебр. функцию Y=K*X+B, выражая из неё B:
B = StartY-K*StartX
; Ну что ж, теперь у нас есть K и B. Можно приступить к построению линии
If StartX < EndX
MinX = StartX
MaxX = EndX
Else
MinX = EndX
MaxX = StartX
End If
; Игрек тож
If StartY < EndY
MinY = StartY
MaxY = EndY
Else
MinY = EndY
MaxY = StartY
End If
If MinX = MaxX ; Если стартовый икс и конечный Икс равны, т.е. линия вертикальна...
For Y=MinY To MaxY; Берём каждое значение Х в пределах указанного отрезка
X = MaxX ; ТО у Икс всегда одно и то же значение
Plot (X,Y) ; Рисуем точку по рассчитанным координатам
Next
Else
For X=MinX To MaxX; Берём каждое значение Х в пределах указанного отрезка
Y = K*X+B ; Вычисляем Y
If Y>= MinY And Y<= MaxY Plot (X,Y) ; Рисуем точку по рассчитанным координатам
Next
; Бугага! Одного Икса оказалось недостаточно! Нада теперяче сделать чтоб и по Y тоже рисовалось...
For Y=MinY To MaxY; Берём каждое значение Х в пределах указанного отрезка
X = (Y-B)/K ; Вычисляем Y
If X>= MinX And X<= MaxX Plot (X,Y) ; Рисуем точку по рассчитанным координатам
Next
End If
; Должно работать :)
End Function
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
22.12.2008, 16:54
|
#5
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Line
Начиная с
идут сомнительные селекции с жутковатым кодом.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
22.12.2008, 22:04
|
#6
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Line
Сей код был писанмною год назад и модерации за ненадобностью не подвергался.
Я же не говорю, что он идеален.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
22.12.2008, 22:16
|
#7
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Line
ok..
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
23.12.2008, 00:43
|
#8
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Ответ: Line
Function DrawLine(x1,y1,x2,y2)
e=2*y2-x2
es=2*y2
ed=2*y2-2*x2
nx=x1
ny=y1
While nx<x2
Plot nx,ny
If (e>0) Then
nx=nx+1
ny=ny+1
e=e+ed
Else
nx=nx+1
e=e+es
EndIf
Wend
End Function
Вот классика жанра
|
(Offline)
|
|
23.12.2008, 00:47
|
#9
|
AnyKey`щик
Регистрация: 22.12.2008
Сообщений: 3
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Line
Сообщение от ABTOMAT
.
|
Э-э-э-э друг! Спасибо конечно за желание помочь ! Но!
Проблема не в том как нарисовать линию, а как сделать контрол с прозрачным фоном, на котором рисуется линия или же как рисовать подвижную линию поверх других контролов(кнопок, picturebox-ов и т.п.)
|
(Offline)
|
|
23.12.2008, 00:54
|
#10
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Line
В таком случае я не до конца понимаю...
Ты используешь какие-то средства движка? Или WinAPI ? Или чего?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
23.12.2008, 21:51
|
#11
|
Бывалый
Регистрация: 03.11.2008
Адрес: Украина, Днепропетровск
Сообщений: 871
Написано 554 полезных сообщений (для 2,520 пользователей)
|
Ответ: Line
Я тоже не совсем понял...
Не раз поднималась тема о том, как на Windwos Form в .NET повесить контролы, аналогичные элементам управления Shape, Shape из VB 6.0. Тогда однозначного решения так и не нашли.
Но все-таки Microsoft позаботилась об этой проблеме:
http://darkbrand.spaces.live.com/blo...2206!269.entry
|
(Offline)
|
|
29.01.2009, 16:55
|
#12
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Line
Вот написал пример, времени много небыло, но думаю этого хватит
|
(Offline)
|
|
29.01.2009, 17:03
|
#13
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Line
Товарищ идёт неправильной дорогой, он использует элементы управления(controls) которые по сути ActiveX. Среди них есть Shape и Line, предназначенные исключительно для отображения статичных линий и фигур как элементов декора интерфейса для windows-приложений.
Для игр это неприменимо совсем.
Я бы товарищу посоветовал использовать PictureBox с свойством ScaleMode=vbPixels и рисовать там всё что ему необходимо.
Для это есть команда Line(x,y)-(x2,y2), color, type
Для манипуляций с растрами посоветую WinApi функцию BitBlt.
З.Ы. сам давным давно 2000-2002г мучал VB для создания игр. Встроеными возможностями рисования можно худо-бедно что-то сделать.
__________________
|
(Offline)
|
|
31.01.2011, 13:37
|
#14
|
AnyKey`щик
Регистрация: 31.01.2011
Сообщений: 13
Написано одно полезное сообщение
|
Ответ: Line
подождите а разве в 2005м VB нет функций рисования??
что-то вроде Me.CreateGraphics.DrawLine(Pens.Black ,1,1,100,100) для рисования на Form1 линии с началом в координате (1,1) и концом в координате (100,100)
2SBJocker:
если не ошибусь то это код от 6VB а он просит для 2005
|
(Offline)
|
|
31.01.2011, 13:52
|
#15
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Line
Пардон я действительно о VB6.
Но вот вам нет прощенья вы опоздали на два года со своим замечанием!
__________________
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:09.
|