Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2013, 20:01   #11
kaktusad
Пользователь
 
Регистрация: 16.11.2012
Сообщений: 17
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
Вообще далеко, имхо.

У Stilet действительно перерисовка.

Предлагаю подход с обычной двойной буфферизацией:
Создать 2 битмапа, в один загрузить картинку (он вообще никогда не будет меняться), во второй тоже загрузить (он будет буфферным изображением, первичная загрузка нужна для уставноки размеров). При смещении мышки передать координаты в функцию рисовки, в которой на второй битмап нарисовать первый, потом нарисовать на второй битмап прямоугольник по нужным координатам, потом второй битмап одним Draw нарисовать на пейнтбокс. Мерцать не будет.
Можно по-подробней об этом способе?
kaktusad вне форума Ответить с цитированием
Старый 24.05.2013, 21:45   #12
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Есть еще один вариант:
3. Сделать курсор мыши в виде прямоугольника.
Цитата:
Изображение создаю в БитМап, рисую на Пэинт боксе с помощью StretchDraw и если его перерисовывать при каждом движении мышки, то будут почти одни полосы.
1. Как перерисовывать только кусок? У меня получается перерисовывать только весь ПэинтБокс и так как перерисовка очень частая, изображения почти не видно.
Вот поэтому я и не использую Пэинтбокс - это инструмент, предназначенный для вполне конкретных целей, в которые не входит эффективная реализация анимации.
Могу посоветовать создавать буфер для рисования самостоятельно, рисовать в нем собственными процедурами, оптимизированными для конкретного применения, и выводить на экран, скажем StretchDIBits. Эта процедура хороша тем, что:
1. Позволяет обновлять часть изображения.
2. Позволяет делать битмап не равным по величине окну, - может быть как больше, так и меньше.
3. При различных режимах цвета (например TrueColor и Paletted) производит перекодировку аппаратно.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение камеры мышкой pufystyj Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 19.01.2012 23:19
планое движение картинки за мышкой Верика JavaScript, Ajax 1 29.06.2010 19:52
Загрузить библиотеку вместе сразу вместе с программой Anekdot Общие вопросы Delphi 4 26.01.2010 23:14
Задача в Delphi(движение за мышкой) Angelly Помощь студентам 5 22.09.2009 13:12
Движение текста вместе с автофигурой Sleepwalker Microsoft Office Excel 2 13.12.2006 12:35