И снова старая тема ScreenMate :(

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

И снова старая тема ScreenMate :(

Сообщение ALX_2002 » 10.06.2005 (Пт) 11:55

Народ... Чую меня закидают тухлыми помидорами...

:oops: :roll:

В инсте второму курсу дали задание сделать оригинальную прогу.

Знакомый попросил меня помочь. Вместе решили сделать ScreenMate

(Зажмуривается... Летят тухлые помидоры.)

...

Вот хотел узнать, есть ли у кого нибудь какие нибудь последние наработки и идеи принципиально быстрого вырезания окон или рисования на десктопе. Потому как до сих пор у меня не получилось заставить работать эту технологию быстро и не грузить проц.

Хелпаните инфой плз.

P.S Темы Шатрыкина Ивана и общую инфу о вырезании окон я читал. :roll:

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 10.06.2005 (Пт) 15:49

Понятное... Короче существенно ничего не изменилось....

Вот интересно - ведь есть DeathWish Dog - или Kamikaze Cat

на www.screenmates.com

Они все сделаны на каком то одном движке.

Работает он идеально. Но вот узнать бы на чём он написан и как бы

сделать аналог на VB. Столь же быстродейственный. :roll:

2 all: Народ, ну посоветуйте что нибудь.

2 Tyomitch: Отец, ну ведь ты же всегда знаешь ответ. Расскажи чайнику - что и как :roll: Плиз.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 11.06.2005 (Сб) 14:38

Отцы, помогаааайте пожааалста. Мне до 28 надо придумать что то с этим делом :shock: :(

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.06.2005 (Сб) 18:01

Кроме SetWindowRgn, других методов создания фигурных окон я не знаю.
Если недостаточно быстро, можешь попробовать кэшировать регионы (GetRegionData+ExtCreateRegion)
Изображение

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 11.06.2005 (Сб) 23:27

2 Tyomitch: Хм.... Интересно.. Попробую порыть в эту область.

Если сможешь, (будет время ничегонеделания и будет желание помочь) :D :D :D (знаю, такое редко бывает), то хелпани кодом плз.

Просто я знаю, что ты умудряешься оптимизировать в 2 раза, то что кажется уже оптимизированно до максимума. :roll:

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 11.06.2005 (Сб) 23:47


tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.06.2005 (Вс) 0:47

A.A.Z. писал(а):http://www.pscode.com/vb/scripts/ShowZip.asp?lngWId=1&lngCodeId=57338&strZipAccessCode=tp%2FS573387112

Совместимость: Win2000+
Изображение

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 12.06.2005 (Вс) 11:09

2 A.A.Z: Ага. Вот это уже интересно.

+ Нет громадной функции просчёта региона с циклами. Работает довольно быстро... хм. Буду разбираться. Спасиб.


2 Tyomitch: Т.е только для XP и 2000. Хм... Ну и что..

98 MUST DIE :) :wink:

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 12.06.2005 (Вс) 17:38

2 Tyomitch: Хм... Я так понял всё упирается в функцию

SetLayeredWindowAttributes из USER32.dll

А если эту DLL ку перенести в 98 и там обратиться к её функциям ? Пахать будет ? :roll:

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 12.06.2005 (Вс) 20:25

Пахать будет ?

Нет.
Многослойность окон это новая фишка винды начиная с 2k, и она вкоренена в систему, так что так просто не получится.
الفيجوال بيسك الرابح

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 12.06.2005 (Вс) 20:54

Эх... Вот в упор не понимаю.

Все скринмейты с www.screenmates.com пашут как под 98/NT/XP

И при этом везде работают идеально и не грузят проц.

Ну вот как те челы добились и совместимости и скорости.

Главное, что никаких DLL они с собой не тащат. Т.е всё как то защито в 1 EXE.

НУ ВОТ КААААК ??? :shock: :shock: :shock:

Ведь API они везде API. Но ведь умудряются как то делать. :?:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.06.2005 (Пн) 4:50

Слушай :)
Насколько я помню, некоторое время назад я тебе давал советы по этому поводу. Советы были основаны исключительно на здравом смысле, а не на тестинге, поэтому, если они тебе не подходят, выложи свой код, а? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 13.06.2005 (Пн) 11:18

2 Gserg: Абсолютно согласен с замечанием. :oops:

Но есть 2 трабла.

:cry:

1) У меня в любом случае уходило огромное колличество времени на вычисление регионов. Код я использовал тот, который был приведён в статье Шатрыкина Ивана. Слегка его оптимизировал. Но результат тот же. Хотя сохранение регионов и давало свой +, но при этом занималось много памяти.

2) Машину после этого форматил. И к сожалению вместе с этим кодом.
:oops:

Посмотрел пример A.A.Z. Там работает всё просто обалденно и в 2 строки. :shock: . Т.е весь код с циклами уже заложен в DLL-ку

Но снова минус - пашет только под XP / 2000

Вот такие вот обстоятельства :roll:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.06.2005 (Пн) 15:21

1. Если уходит на вычисление, блин, сохраняй вычисленные! Насколько я помню, я говорил именно это, нет?
2. Ну ты же сейчас чем-то пользуешься? Раз что-то у тебя тормозит, значит, что-то всё-таки есть?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 13.06.2005 (Пн) 19:00

GSerg писал(а):1. Если уходит на вычисление, блин, сохраняй вычисленные! Насколько я помню, я говорил именно это, нет?
2. Ну ты же сейчас чем-то пользуешься? Раз что-то у тебя тормозит, значит, что-то всё-таки есть?


Дык я же сказал. СОХРАНЯЮ !!! :roll:, НО

1) Занимает память
2) Надо потом выгружать. - А у меня картинок штук 30.

Плюс если мне нужно повернуть изображение ( у меня картинки бега вправо и влево одинаковые, поворачиваю через STRETCHBLT), то мне нужно хранить регионы как на бег влево, так и на бег вправо. :shock:

А если я 2 проги запущу... ЭТ Ж ДОЛБАНУТЬСЯ МОНО !!!

SCREENMATE он на то и СКРИНМЕЙТ, что пашет быстро и не грузит систему. :( .

На счёт того, что я сейчас сделал - есть пример.
Вот. Но он на 2000 / XP. Думаю как сделать, чтобы он также работал и под 98
Вложения
screenmate.rar
(128.07 Кб) Скачиваний: 131

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 14.06.2005 (Вт) 15:00

Ну тк... Какие будут идеи ? :roll:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.06.2005 (Вт) 15:50

Гы гы гы :)
Мда, оригинально :)

Смоделировать это на 98 можно через TransparentBlt (но не системную, а свою). Или через DirectX, там тоже есть ColorKey...
Но регионов-то тут нет :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 14.06.2005 (Вт) 16:02

2 Gserg: Ничё не понял... Мне ж надо форму вырезать....

А как через DIRECTX или TRANSPARENTBLT это сделать, я не представляю. :shock: :roll:

:roll:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.06.2005 (Ср) 4:49

Если тебе надо форму вырезать, то зачем ты этим примером восхищаешься? Там только StretchBlt.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 15.06.2005 (Ср) 8:05

2 Gserg: Великий Шаман, так ведь тут тоже самое вырезание происходит, только в 2 строки, как я уже говорил. Суть проблемы то в чём

ДОБИТЬСЯ ТАКОЙ ЖЕ СКОРОСТИ И ЭКОНОМИИ РАБОТЫ ПРОЦА

Вот именно это у меня и не получалось с вырезанием регионов.

Вот поэтому к тебе за помошью и обращаюсь. :oops:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.06.2005 (Ср) 16:11

Ы?

То есть ты хочешь сказать, что если на окно наложен стиль WS_EX_LAYERED, а потом применен COLORKEY, то TransparentBlt приводит к автоматическому вырезанию окна по форме рисунка?

Ты точно хочешь сказать именно это?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 15.06.2005 (Ср) 18:38

2 Gserg: Слушай, ты уже третий пост подряд грузишь меня рассуждениями :scratch:

Я ХОЧУ СКАЗАТЬ ОДНО ! ЭТОТ КОД ПАШЕТ ! КАРТИНКА ЛЕЖАЩАЯ НА ФОРМЕ ОТОБРАЖАЕТСЯ С ПРОЗРАЧНЫМ ФОНОМ !

Вот тоже самое нужно мне добиться.... :evil:

А распросы - хочу ли я ЭТО сказать или нет. На то я пример и выложил, как ты просил. Зачем спрашивать, если там всё видно ??? :shock:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.06.2005 (Чт) 17:15

Дык для отображения картинки с прозрачным фоном используется, блин, TransparentBlt, о чём я тебе третий раз говорю!
Искать!
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 16.06.2005 (Чт) 20:01

2 Gserg: Так понятно.... :? А я тебе 5 раз говорю - МНЕ НУЖНО ВЫРЕЗАТЬ ФОРМУ ПО КАРТИНКЕ !!!!

А НЕ РИСОВАТЬ ПРОЗРАЧНЫЙ ФОН !!! ??*&(@#&(*@&# !

МАТОМ РУГАТЬСЯ ХОЧЕТСЯ !

НЕУЖЕЛИ ТЫ ДУМАЕШЬ, Я НЕ ЗНАЮ КАК ПОЛЬЗОВАТЬСЯ

BitBlt, TransparentBLt
НЕ НАДО МЕНЯ ЗА ДУРАКА ПРИНИМАТЬ :evil:

Перечитай ещё раз тему - СКРИНМЕЙТ. :lol: :D :lol:

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 16.06.2005 (Чт) 20:03

Посмотри как пример работает и не пиши бесполезных постов ! 8)

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 16.06.2005 (Чт) 21:30

Шаман всегда прав :) Если он не прав, то работать может перестать не только TransparentBlt, но и SetLayeredWindowAttributes ;) Шаманы - они такие ;)

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 16.06.2005 (Чт) 22:23

2 A.A.Z: И как это понимать ? :shock:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.06.2005 (Пт) 9:10

ALX_2002 писал(а):Посмотри как пример работает и не пиши бесполезных постов ! 8)

Если ты думаешь, что я не смотрел пример, то ты не прав.
Пока не могу сказать подробнее, с компом проблемы.
Всё сказанное мною выше повторю ещё раз.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 17.06.2005 (Пт) 9:26

2 Gserg: Хм... То ли у меня крыша поехала.. То ли одно из

двух.... :shock:

Так и не понял какое отношение ко всему этому имеет BitBlt и

TransparetnBlt, кроме того, что я могу прозрачную картинку вывести в

нужный HDC c прозрачным фоном.

* Можно конечно сохранять фон из HDC потом накладывать

поверх свою картинку и рисовать этот кусок обратно в HDC.

Делал. Но при этом нельзя было окна двигать. Т.к скринмейт оставлял следы... :(

Хотя.... наверное я опять не понял о чём ты.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 17.06.2005 (Пт) 16:05

2 all: Хм... Кстати... А через BeginPath и EndPath никак нельзя добиться такого результата ? :roll:

След.

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

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

Сейчас этот форум просматривают: Bing-бот и гости: 84

    TopList