Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Visual Basic

Ответ
 
Опции темы
Старый 21.12.2008, 23:56   #1
Ayrat
AnyKey`щик
 
Регистрация: 21.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, 00:29   #2
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,152
Написано 5,036 полезных сообщений
(для 14,583 пользователей)
Ответ: Line

С VB не знаком.
Могу предложить тупой способ - рисовать линию самому (исходя из уравнения y=kx+z), но это возможно если существует возможность нарисовать точку, разумеется.
Если интересно, у меня есть аналогичный код на BlitzBasic, думаю, его нетрудно перевести на VB
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 22.12.2008, 08:27   #3
Ayrat
AnyKey`щик
 
Регистрация: 21.12.2008
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Line

Сообщение от ABTOMAT Посмотреть сообщение
С VB не знаком.
Могу предложить тупой способ - рисовать линию самому (исходя из уравнения y=kx+z), но это возможно если существует возможность нарисовать точку, разумеется.
Если интересно, у меня есть аналогичный код на BlitzBasic, думаю, его нетрудно перевести на VB
О BlitzBasic конечно первый раз слышу, но если не трудно, всё таки выложите, может поможет чем
(Offline)
 
Ответить с цитированием
Старый 22.12.2008, 13:19   #4
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,152
Написано 5,036 полезных сообщений
(для 14,583 пользователей)
Ответ: 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, 13:54   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 03.09.2005
Сообщений: 13,951
Написано 6,759 полезных сообщений
(для 20,822 пользователей)
Ответ: Line

Начиная с
If MinX = MaxX
идут сомнительные селекции с жутковатым кодом.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 22.12.2008, 19:04   #6
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,152
Написано 5,036 полезных сообщений
(для 14,583 пользователей)
Ответ: Line

Сей код был писанмною год назад и модерации за ненадобностью не подвергался.
Я же не говорю, что он идеален.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 22.12.2008, 19:16   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 03.09.2005
Сообщений: 13,951
Написано 6,759 полезных сообщений
(для 20,822 пользователей)
Ответ: Line

ok..
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 22.12.2008, 21:43   #8
Tadeus
Троллота
 
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений
(для 1,771 пользователей)
Ответ: 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)
 
Ответить с цитированием
Старый 22.12.2008, 21:47   #9
Ayrat
AnyKey`щик
 
Регистрация: 21.12.2008
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Line

Сообщение от ABTOMAT Посмотреть сообщение
.
Э-э-э-э друг! Спасибо конечно за желание помочь ! Но!

Проблема не в том как нарисовать линию, а как сделать контрол с прозрачным фоном, на котором рисуется линия или же как рисовать подвижную линию поверх других контролов(кнопок, picturebox-ов и т.п.)
(Offline)
 
Ответить с цитированием
Старый 22.12.2008, 21:54   #10
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,152
Написано 5,036 полезных сообщений
(для 14,583 пользователей)
Ответ: Line

В таком случае я не до конца понимаю...
Ты используешь какие-то средства движка? Или WinAPI ? Или чего?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 23.12.2008, 18:51   #11
Harter
Бывалый
 
Аватар для Harter
 
Регистрация: 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, 13:55   #12
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,475
Написано 2,936 полезных сообщений
(для 5,172 пользователей)
Ответ: Line

Вот написал пример, времени много небыло, но думаю этого хватит
Вложения
Тип файла: zip DrawLine.zip (27.4 Кб, 135 просмотров)
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 29.01.2009, 14:03   #13
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,898
Написано 3,384 полезных сообщений
(для 9,251 пользователей)
Ответ: 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, 10:37   #14
Dragonfly
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, 10:52   #15
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,898
Написано 3,384 полезных сообщений
(для 9,251 пользователей)
Ответ: Line

Пардон я действительно о VB6.
Но вот вам нет прощенья вы опоздали на два года со своим замечанием!
__________________
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
DStalk (31.01.2011), Reizel (31.01.2011)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MSVS C++ Linker Command Line Samodelkin C++ 0 20.09.2009 14:53
3D Game on LINE NullX Болтовня 8 17.03.2007 21:32


Часовой пояс GMT +1, время: 22:01.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com