Подскажите, как лучше сделать "выделение"

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Подскажите, как лучше сделать "выделение"

Сообщение X-BOND » 05.07.2005 (Вт) 13:24

Например, как в Photoshope, бегущий инвертируемый пунктир.
Я сейчас сделал просто два Rectangle разного цвета (черный и белый), второй со стилем PS_DOT. Но как-то мертво получилось.


P.S.
И еще, что быстрее работет:
CopyMemory RECT2, RECT1, Len(RECT1)
или
CopyRect RECT2, RECT1

Arcanoid
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 01.01.2005 (Сб) 15:44

Сообщение Arcanoid » 05.07.2005 (Вт) 16:05

X-BOND писал(а):И еще, что быстрее работет:
CopyMemory RECT2, RECT1, Len(RECT1)
или
CopyRect RECT2, RECT1

Можно замерить время выполнения циклов с N вызовами той и другой ф-ий (напремер, цикл, повторяющийся 1000000 раз)

По идее RECT2 = RECT1 быстрее :roll:
Invalid user or password...

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 05.07.2005 (Вт) 20:29

Может, подойдет обычное мигание? На базовый рискунок с заданной частотой BitBlt'ишь картинку: белый незакрашенный прямоугольник на черном фоне. BitBlt'ишь, ясное дело с флагом SRCINVERT. Только надо сделать счетчик для хранения фазы мигания, чтобы потом корректно снимать подобное выделение. По желанию первым (и, соответственно, последним) кадром можно вместо сплошного прямоугольника отBitBlt'ить пунктирный.
Листинги не горят!

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 07.07.2005 (Чт) 13:11

Arcanoid писал(а):Можно замерить время выполнения циклов с N вызовами той и другой ф-ий (напремер, цикл, повторяющийся 1000000 раз)
По идее RECT2 = RECT1 быстрее :roll:

Проверил в цикле, действительно RECT2 = RECT1 чуть быстрее, далее идет с мизерным отрывом CopyRect, а CopyMemory отработал медленее всех.

Faust писал(а):Может, подойдет обычное мигание? На базовый рискунок с заданной частотой BitBlt'ишь картинку: белый незакрашенный прямоугольник на черном фоне. BitBlt'ишь, ясное дело с флагом SRCINVERT. Только надо сделать счетчик для хранения фазы мигания, чтобы потом корректно снимать подобное выделение. По желанию первым (и, соответственно, последним) кадром можно вместо сплошного прямоугольника отBitBlt'ить пунктирный.

Такое мерцание, имхо, будет слишком на юзера давить.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 07.07.2005 (Чт) 13:41

IMHO можно просто взять готовый ProgressBas у которого есть соответствующий стиль, например:

http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=56151&lngWId=1
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 07.07.2005 (Чт) 13:49

Andrey Fedorov писал(а):IMHO можно просто взять готовый ProgressBas у которого есть соответствующий стиль, например:

http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=56151&lngWId=1

А можно спросить при чем здесь это? :shock: :shock: :shock:
Если всё делать своими ручками, они скоро отвалятся !


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 128

    TopList