Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];

Вниз

Как сделать слои?   Найти похожие ветки 

 
Trekk   (2003-07-28 14:24) [0]

Есть задача:
Сделать графический редактор с функциональностью, похожей на Photoshop.
А именно:
- поддержка слове
- работа с кусочками изображений (ну типа на разных слоях чтобы распологались)

Я с подобными вещами в CBuilder"e не работал.
Подскажите, пожалуйста, в какую сторону копать?

Делать на форме несколько TImage для каждого слоя?
Если так, то как сделать, чтобы они не перекрывали графику на других слоях,
если на них самих ничего не будет..

Даже и не знаю в какую сторону копать.
Был бы признателен любой помощи или ссылками на примеры.

Спасибо!
Trekk
mailto: trekk@sendmail.ru


 
[lamer]Barmaglot   (2003-07-28 14:48) [1]

Слои - TImage
Кусочки - Region

Чтобы не перекрывались для каждого слоя ввести номер. Выводить TImage в порядке возрастания нумерации и т.д.


 
Trekk   (2003-07-28 15:05) [2]

И еще вопрос: Если я например какой-нибудь "кусочек" буду передвигать - каким способом можно это реализовать? Чтобы и изображение не портилось снизу и передвигался сам кусок?


 
[lamer]Barmaglot   (2003-07-28 17:37) [3]

Смотреть какому слою принадлежит точка где находится курсор. Передвигать слой к которому принадлежит данная точка.


 
Fenik   (2003-07-28 20:17) [4]

TImage - это конечно же круто...
Но я бы не стал его трогать. Представте 100 TImage при перерисовке.. ужас..

--------------------
Тихо-мирно вводим тип:

TLayer = packed record
Alpha: Byte; //Типа как в крутом редакторе
Left, Top: Integer; //Левый верхний угол слоя
Bitmap: TBitmap; //Сам слой
end;

А потом массивчик:

FLayers: array of TLayer;

По ходу массив заполняется...
Прорисовочка же производится на один битмеп, который потом выводится на обозрение.

for i := 0 to High(FLayers) do begin
if FLayers[i].Alpha = 0 then
FBitmap.Canvas.Draw(FLayers[i].Left, FLayers[i].Top, FLayers[i].Bitmap)
else
AlphaBlend(FBitmap, FLayers[i].Bitmap, FLayers[i].Left, FLayers[i].Top, FLayers[i].Alpha);
end;
-----------------

Ну это конечно же по-простому. А так, всё сложнее...


 
iXuSs   (2003-07-28 22:25) [5]

> Слои - TImage
Кусочки - Region


Чушь собачья, ни один нормальный графический редактор не будет их использовать. Нужно задействовать Graphic32 минимум, с эффектами Envision Graphic Library. Кстати, в Graphic32 есть понятие слоя (класс TLayer).


 
[lamer]Barmaglot   (2003-07-29 10:12) [6]

Я указал самый простой путь, но не говорил, что он самый рациональный... Кроме того я очень сомневаюсь в способности человека сделать Photoshop, если он не знает как организовать слои...


 
AlexT1000   (2003-07-29 15:39) [7]

>>Fenik

Использовать record не есть хорошо.
Не забывай ,что дельфи объектно-ориентированный язык .
Поэтому слой должен быть объектом это вернее и удобнее.
TLayer =class
public
Left ,Top : integer;
Visible : boolean;
Bitmap : TBitmap;
procedure Draw(Canvas : TCanvas);
end;

И слои удобнее хранить не в массиве, а в TList.
Легче ими манипулировать.(менять порядок следования , удалять, вставлять)



 
Trekk   (2003-07-29 20:37) [8]

Я не претендую на создание аналога Фотошопа.
Мне просто интересны были принчипы - как сделать и все.

Я хотел для каждого слоя делать TImage. И на каждом слое например хранить по несколько обьектов - которые можно перемещать по родительскому слою при помощи копирования на слой картинки.
Данные по картинка хранить в обычных массивах для каждого слоя.

Все равно спасибо за советы!
А Graphic32 можно проинсталить в CBuilder? Я просто на нем работаю...


 
Fenik   (2003-07-29 21:21) [9]

> Сделать графический редактор с функциональностью, похожей на Photoshop.

Советую сначала сделать редактор с функциональностью Paint"a.
А потом, фотошоп строить не захочется.


 
iXuSs   (2003-07-29 22:49) [10]

> Я хотел для каждого слоя делать TImage.

Это то же самое, что использовать машину для того, чтобы посветить фарами в углу з ашкафом. Слишком тучный компонент. А слой - он лёгкий, невидимый.

Graphic32 только для Delphi 5-7 :(


 
AlexT1000   (2003-07-30 13:11) [11]

>> Fenik
Создать редактор с функциональностью фотошопа не так сложно как может показаться .главное время . я лично сделал ( фирма у нас такая) редактор включая (выделения любых форм (не только рект овал ) форма любая. мажик лассо, кисти карандаши, терки ,анду реду вложенности пока хватит виртуальной памяти, около 70 фильтров и перекрасок различных. батч, акшионы, обработка всех этих тулзов. т.е если я в одном файле рисую кистью .я могу этой же кистью нарисовать тот же путь в любом другом файле. )
на это у меня ушло 3.5 месяца самоотверженного труда. задача была интересная работа захватывала.

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

>> Trekk

а графические редакторы действительно не строят на TImage
Скачайте G32 она хоть и не пойдет на билдере, но посмотрев на ее внутренности вы поймете основы структуры построения графических редакторов .


 
Fenik   (2003-07-30 17:06) [12]

> AlexT1000 © (30.07.03 13:11)

А можно ссылочку. Интересно стало.
Наверное триал версия есть?


 
AlexT1000   (2003-07-30 19:00) [13]

в том то и дело ,что триала нет.


 
ЮЮ   (2003-07-31 02:30) [14]

Из Нelp-а Graphics32 (1.4):
Graphics32 supports Delphi versions 4, 5, and 6, and C++ Builder 5.

C сайта призволителя:
version 1.5. Added packages for Delphi 7. The library should also compile with C++ Builder 6.


 
iXuSs   (2003-07-31 22:13) [15]

2 ЮЮ:

Я искал на сайте, но не нашёл :) Видать, старею. Спасибо, прояснил.


 
Fenik   (2003-08-01 00:31) [16]

> AlexT1000 © (30.07.03 19:00)

> в том то и дело ,что триала нет.


Что же вы так?!
Кто у вас её купит, не пощупав?


 
AlexT1000   (2003-08-01 13:46) [17]

Покупают. не баись
http://www.globalstarsoftware.com/products/GLS00363/index.html
видел бы ты коробку в полном объеме. Абалдеть. так и хочется купить



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.01 c
1-89855
Боян Георгиев
2003-11-16 14:33
2003.11.27
Функция Read для стрингов


1-89869
Ламер
2003-11-16 01:56
2003.11.27
Тэг кнопки


3-89681
k_len
2003-11-06 14:18
2003.11.27
Update


7-90142
mr_All
2003-09-17 11:08
2003.11.27
Как определить произошла ли регистрация любого пользователя ?


14-90103
PavelSin
2003-11-04 10:40
2003.11.27
Просмоторщик дайджестов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский