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

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

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 29.04.2012, 13:30   #1
MoltoBene
AnyKey`щик
 
Регистрация: 29.04.2012
Сообщений: 1
Написано 0 полезных сообщений
(для 0 пользователей)
Вопрос Копирование в буфер криволинейной области

Всем привет!
Можно ли какими-нибудь средствами копировать в буфер криволинейные области?
Например, дано изображение. Нужно скопировать его кусок неправильной криволинейной формы, скажем, в другое изображение, желательно, чтобы часть изображения за границами скопированной области была прозрачной.
CopyRect не подойдет - он только для прямоугольных областей. А ReadPixel/ReadPixelFast в данном случае будет медлительным. Необходимо, чтобы перенос фрагмента, ограниченного криволинейной областью, происходил в реалтайме. + область должна быть динамической, изменяться по заданной формуле (какой-либо).
То есть, значения формулы меняются, границы копирования меняются соответственно, из первого изображения во второе переносится соотвественный кусок.
Прошу прощения, возможно, написал не очень корректно, но надеюсь, что к телепатии вам прибегать не придется.
Подскажите, пожалуйста, каким способом это можно реализовать? заранее спасибо!
(Offline)
 
Ответить с цитированием
Старый 30.04.2012, 00:50   #2
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Копирование в буфер криволинейной области

копировать по пиксельно.

вычислять какие пиксели убрать , а какие добавить с помощью математики. +) используя формулы контуров, после каждого изменения формулы или значений переменных в этой формуле.
(Offline)
 
Ответить с цитированием
Старый 01.05.2012, 21:12   #3
Brain
AnyKey`щик
 
Аватар для Brain
 
Регистрация: 11.04.2009
Сообщений: 11
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Копирование в буфер криволинейной области

В принципе, скорость копирования пикселей ReadPixelFast/WritePixelFast довольно приемлемая: см. вложения.

Если вам необходимо копировать изображения почти мгновенно, то используйте FastImage (кстати, не бесплатная) - попробовать можно тут http://fastlibs.com/
В этой библиотеке есть специальная функция на такие случае: DrawPoly, пример использования в файле fast.bb (там используется xors3d, но обойтись можно и без него)

Что интересно, скорость обработки изображений в дебаге и в финальной сборке отличается на порядок для чистого блитца, что не относится к аналогичному случаю с библиотекой. Это объясняется тем, что в Blitz3D при дебаге код не компилируется, а интерпретируется. Следовательно скомпилированный проект будет работать быстрее. Так что, возможно и чистого Blitz3D вам хватит.
Алгоритм, подобный приложенному, использовать не стоит, так как он медлителен при большом количестве точек и подходит только для выпуклых многоугольников.
Почитать о многоугольниках можно тут:
Для выпуклых
Для всех

Скомпилированные файлы лежат тут http://dl.dropbox.com/u/11705841/bin.7z
Вложения
Тип файла: zip src.zip (27.9 Кб, 657 просмотров)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


Часовой пояс GMT +4, время: 10:27.


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