![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
20071231 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 26.5.2007 Где: Россия, Белая Кал итва Репутация: нет Всего: нет |
Моя проблема такая. Мне надо выводить картинку с маской на VB. Картинок будет много разных одновременно. Во время вывода нужно иметь возможность её вращать. И надо чтобы всё это не тормозило и не мигало.
У меня был один ocx, в нём есть функция вывода картинки с маской и вращения от центра с задаваемым углом и цветом маски. Но, она брала картинку только из Picture и ни откуда больше. Из-за этого прога сильно тупила. Обычно я загружал картинку в оперативную память и оттуда выводил куда и как надо. А здесь только через PictureBox. Может кто знает как объект в оперативке StdPicture сделать со свойствами PictureBox или чё-нибудь в этом роде, чтобы она в эту функцию влазила. Ну или ещё какие кто знает способы, ссылки. Заранее спасибо |
|||
|
||||
kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
A BitBlt не подходит?
-------------------- (С) kapbepucm |
|||
|
||||
20071231 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 26.5.2007 Где: Россия, Белая Кал итва Репутация: нет Всего: нет |
А разве он вращает? Если вращает, напиши как пользоваться или ссылочку
|
|||
|
||||
kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Не, ну используя простейшую тригонометрию, думаю результата добится при большом желании возможно (даже где-то встречал, если честно), другой вопрос, если картинка большая надо избавлятся от мерцания, при движении, но для маленких подходит вполне (я курсовую работу на Delphi так делал). Поищу про повороты, но обещать ничего не могу- давно это было... А не будет быстрее повернуть в графическом редакторе, все варианты сохранить, ну и потом, по мере надабности выводить нужный экземпляр? Ибо тригонометрия- штука долгая в RunTime и нудная в разработке
![]() Мне тут посоветовали обратиться к DirectX, но я там пока не очень силён. Это сообщение отредактировал(а) kapbepucm - 18.6.2007, 21:07 -------------------- (С) kapbepucm |
|||
|
||||
20071231 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 26.5.2007 Где: Россия, Белая Кал итва Репутация: нет Всего: нет |
Да ну хранить все картинки это не вариант, у меня их много и для каждой все повороты, я над этим думал, мне надо вращать в процессе.
А про тригонометрию я не совсем догнал, расскажи поподробнее. А Directx я слышал дело хорошее, тока тоже не знаю как им пользоваться. |
|||
|
||||
kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Извините за качество, рисовал быстро. На картинке показан поворот точки A относительно начала коорд. плоскости на определённый угол. Координаты: A(0;r); A1(r*sin(угла); r*cos(угла)). Хотя не советую использовать, способ не самый лучший.
Это сообщение отредактировал(а) kapbepucm - 19.6.2007, 11:04 Присоединённый файл ( Кол-во скачиваний: 13 ) ![]() -------------------- (С) kapbepucm |
|||
|
||||
20071231 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 26.5.2007 Где: Россия, Белая Кал итва Репутация: нет Всего: нет |
А, ну я в своё время делал такую фигню. Так ты что мне предлагаешь каждую точку картинки вращать по отдельности? а каким методом потом выводить каждую точку? .pset чтоли? Так я пробовал, тупит страшно. Или ты ещё чёто знаешь?
Давай говори всё сразу и по порядку. Это сообщение отредактировал(а) 20071231 - 19.6.2007, 11:04 |
|||
|
||||
kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Я давно делал похожий проект. Там в начале создавались в памяти все картинки, ну и потом по мере надобности выводились. Вывод всей (уже готовой) картинки быстрее чем попиксельный вывод, но если нет места в памяти- это другой вопрос. Моё мнение- лучше покопай DirectX.
Это сообщение отредактировал(а) kapbepucm - 19.6.2007, 11:49 -------------------- (С) kapbepucm |
|||
|
||||
20071231 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 26.5.2007 Где: Россия, Белая Кал итва Репутация: нет Всего: нет |
Ну допустим у меня в памяти в массиве координаты каждой точки картинки, я их взял, повернул, и как потом её цельной картинкой вывести? Можно из этого массива сделать в памяти полноценную картинку?
|
|||
|
||||
kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Я предлагаю для каждой картинки сделать свой массив, ещё лучше- не массив а хрень (не знаю, как она порусcки называется) через CreateCompatibleDC. Короче, там, в CompatibleDC прорисовать каждую картинку, которую будем использовать, ну, и по мере надобности выводить, используя BitBlt. У меня выводилось практически мгновенно, только картинки были не гигантскими. Наверное, этот способ не очень экономит память, зато не сложно в реализации. Для серъёзного проекта данный способ не советую- зачем изобретать велосипед?
Это сообщение отредактировал(а) kapbepucm - 19.6.2007, 15:40 -------------------- (С) kapbepucm |
|||
|
||||
20071231 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 26.5.2007 Где: Россия, Белая Кал итва Репутация: нет Всего: нет |
Не ну так ты напиши это чё за CreateCompatibleDC. Как им пользоваться, напиши поподробнее
|
|||
|
||||
kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Извини, только завтра- у меня всё на рабочем месте. Так что- моя идея понравилась?
Это сообщение отредактировал(а) kapbepucm - 19.6.2007, 18:44 -------------------- (С) kapbepucm |
|||
|
||||
20071231 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 26.5.2007 Где: Россия, Белая Кал итва Репутация: нет Всего: нет |
Ну ты напиши, а я посмотрю, попробую
|
|||
|
||||
kapbepucm |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Декларация API:
Далее сам код:
Я надеюсь, суть понятна. Буду очень рад, если чем-нибудь смог/смогу помочь! Это сообщение отредактировал(а) kapbepucm - 20.6.2007, 12:19 -------------------- (С) kapbepucm |
||||
|
|||||
20071231 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 26.5.2007 Где: Россия, Белая Кал итва Репутация: нет Всего: нет |
Напиши побольше коментариев в первом абзаце после объявлений. А то я там не пойму чёто.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "VB6" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB6 | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |