Sign in Join
Wiki copytemporary

BGRABitmap/ru: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-[![bgrabitmap logo.jpg](/wiki-images/7/7b/bgrabitmap_logo.jpg)](</File:bgrabitmap_logo.jpg>)
2-
31См.также: [[Developing with Graphics/ru|Developing with Graphics]]
42
5-## Contents
6-
7- * 1 Описание
8- * 2 Дополнительные пакеты
9- * 3 Использование BGRABitmap
10- * 3.1 Руководства
11- * 3.2 Обзор
12- * 3.3 Ссылка на модуль BGRABitmapTypes
13- * 3.4 Установка
14- * 3.5 Простой пример
15- * 4 Понятия
16- * 5 Встроенные функции рисования
17- * 6 Рисование с помощью холста
18- * 7 Прямой доступ к пикселям
19- * 8 Манипуляции с изображениями
20- * 9 Сочетание изображений
21- * 10 Скриншоты
22- * 11 Лицензия
23- * 12 Скачать
24-
253### Описание
264
27-**BGRABitmap** \- это набор модулей, предназначенных для изменения и создания изображений с прозрачностью (альфа-канал). Прямой пиксельный доступ позволяет быстро обрабатывать изображения. Библиотека была протестирована на Windows, Ubuntu и Mac OS X (последняя версия не работает на Mac), с наборами виджетов win32, gtk1, gtk2 и carbon.
5+**BGRABitmap** - это набор модулей, предназначенных для изменения и создания изображений с прозрачностью (альфа-канал). Прямой пиксельный доступ позволяет быстро обрабатывать изображения. Библиотека была протестирована на Windows, Ubuntu и Mac OS X (последняя версия не работает на Mac), с наборами виджетов win32, gtk1, gtk2 и carbon.
286
29-Основным классом является [[TBGRABitmap class|TBGRABitmap]], который является производным от [[fcl-image|TFPCustomImage]]. Существует также [TBGRAPtrBitmap](</index.php?title=TBGRAPtrBitmap_class&action=edit&redlink=1> "TBGRAPtrBitmap class \(page does not exist\)"), позволяющий редактировать данные BGRA, которые уже распределены. Этот формат состоит из 4 байтов для каждого пикселя (синий, зеленый, красный и альфа в этом порядке).
7+Основным классом является [[TBGRABitmap class|TBGRABitmap]], который является производным от [[fcl-image|TFPCustomImage]]. Существует также [[TBGRAPtrBitmap class|TBGRAPtrBitmap]], позволяющий редактировать данные BGRA, которые уже распределены. Этот формат состоит из 4 байтов для каждого пикселя (синий, зеленый, красный и альфа в этом порядке).
308
31-Изображение может быть отображено на обычном Canvas или на [[BGRABitmap and OpenGL|OpenGL surface]].
9+Изображение может быть отображено на обычном Canvas или на [[BGRABitmap and OpenGL|OpenGL surface]].
3210
3311### Дополнительные пакеты
3412
35-Некоторые пакеты используют BGRABitmap для обеспечения элементов управления приятной графикой:
13+Некоторые пакеты используют BGRABitmap для обеспечения элементов управления приятной графикой:
3614
37- * BGLControls: предоставляет TBGLVirtualScreen для рисования на поверхности OpenGL. Этот пакет находится в архиве BGRABitmap.
38- * [[BGRAControls]]: ярлыки с тенями, красивыми кнопками, фигурами и т.д.
39- * [[uE Controls]]: датчики, светодиоды и т.д.
40- * [[Material Design]]: Компоненты пользовательского интерфейса, основанные на принципах разработки материалов Google.
41- * BGRAControlsFX[[1]](<https://forum.lazarus.freepascal.org/index.php?topic=34534.0>): элементы управления рендеринга на поверхности OpenGL.
15+- BGLControls: предоставляет TBGLVirtualScreen для рисования на поверхности OpenGL. Этот пакет находится в архиве BGRABitmap.
16+- [[BGRAControls]]: ярлыки с тенями, красивыми кнопками, фигурами и т.д.
17+- [[uE Controls]]: датчики, светодиоды и т.д.
18+- [[Material Design]]: Компоненты пользовательского интерфейса, основанные на принципах разработки материалов Google.
19+- BGRAControlsFX[1](https://forum.lazarus.freepascal.org/index.php?topic=34534.0): элементы управления рендеринга на поверхности OpenGL.
4220
43-Некоторые примеры в папке с примерами используют BGRAControls и BGLControls. Вам может понадобиться установить их, чтобы открыть эти проекты в Lazarus. См. [[Install Packages]].
21+Некоторые примеры в папке с примерами используют BGRAControls и BGLControls. Вам может понадобиться установить их, чтобы открыть эти проекты в Lazarus. См. [[Install Packages]].
4422
4523### Использование BGRABitmap
4624
4725#### Руководства
4826
49- * [Как конвертировать приложение из TCanvas в BGRABitmap(англ.)](<http://www.youtube.com/watch?v=HGYSLgtYx-U>)
50- * [[BGRABitmap tutorial TAChart|Using BGRABitmap to render a TAChart]]
51- * [[BGRABitmap tutorial|A series of tutorials to learn step by step]]
52- * Примеры на [GitHub](<https://github.com/bgrabitmap>).
53- * [Цикл уроков по компоненту BGRABitmap](<http://dropdoc.ru/Zyr2>) от пользователя [sign](<http://www.freepascal.ru/forum/memberlist.php?mode=viewprofile&u=9593>)
27+- [Как конвертировать приложение из TCanvas в BGRABitmap(англ.)](http://www.youtube.com/watch?v=HGYSLgtYx-U)
28+- [[BGRABitmap tutorial TAChart|Using BGRABitmap to render a TAChart]]
29+- [[BGRABitmap tutorial|A series of tutorials to learn step by step]]
30+- Примеры на [GitHub](https://github.com/bgrabitmap).
31+- [Цикл уроков по компоненту BGRABitmap](http://dropdoc.ru/Zyr2) от пользователя [sign](http://www.freepascal.ru/forum/memberlist.php?mode=viewprofile&u=9593)
5432
5533#### Обзор
5634
57-Функции имеют длинные имена, чтобы быть понятными. Почти все доступно в виде функции или с помощью свойства объекта [[TBGRABitmap class|TBGRABitmap]]. Например, вы можете использовать CanvasBGRA, чтобы иметь некоторые холсты, похожие на TCanvas (с прозрачностью и сглаживанием) и Canvas2D, чтобы иметь те же функции, что и [HTML canvas](<https://developer.mozilla.org/en/HTML:Canvas>).
35+Функции имеют длинные имена, чтобы быть понятными. Почти все доступно в виде функции или с помощью свойства объекта [[TBGRABitmap class|TBGRABitmap]]. Например, вы можете использовать CanvasBGRA, чтобы иметь некоторые холсты, похожие на TCanvas (с прозрачностью и сглаживанием) и Canvas2D, чтобы иметь те же функции, что и [HTML canvas](https://developer.mozilla.org/en/HTML:Canvas).
5836
59-Некоторые специальные функции требуют использования модулей, но они могут вам не понадобиться:
37+Некоторые специальные функции требуют использования модулей, но они могут вам не понадобиться:
6038
61- * TBGRAMultishapeFiller иметь сглаженные соединения многоугольников в BGRAPolygon
62- * TBGRATextEffect в BGRATextFX
63- * 2D преобразования находятся в BGRATransform
64- * TBGRAScene3D в BGRAScene3D
65- * Если вам нужны слои, BGRALayers предоставляет TBGRALayeredBitmap
39+- TBGRAMultishapeFiller иметь сглаженные соединения многоугольников в BGRAPolygon
40+- TBGRATextEffect в BGRATextFX
41+- 2D преобразования находятся в BGRATransform
42+- TBGRAScene3D в BGRAScene3D
43+- Если вам нужны слои, BGRALayers предоставляет TBGRALayeredBitmap
6644
67-Двойная буферизация на самом деле не является частью BGRABitmap, потому что она больше о том, как обрабатывать формы. Для двойной буферизации вы можете использовать TBGRAVirtualScreen, который находится в пакете [[BGRAControls]]. Кроме того, двойная буферизация в BGRABitmap работает как любая двойная буферизация. Вам нужно иметь растровое изображение, в котором вы храните свой чертеж и которое вы отображаете с помощью одной инструкции Draw.
45+Двойная буферизация на самом деле не является частью BGRABitmap, потому что она больше о том, как обрабатывать формы. Для двойной буферизации вы можете использовать TBGRAVirtualScreen, который находится в пакете [[BGRAControls]]. Кроме того, двойная буферизация в BGRABitmap работает как любая двойная буферизация. Вам нужно иметь растровое изображение, в котором вы храните свой чертеж и которое вы отображаете с помощью одной инструкции Draw.
6846
6947#### Ссылка на модуль BGRABitmapTypes
7048
71- * [[BGRABitmap Pixel types/ru|Pixel types and functions]]: _TBGRAPixel_ , _THSLAPixel_...
72- * [[BGRABitmap Types imported from Graphics|Types imported from Graphics]]: _TColor_ , стиль пера...
73- * [[BGRABitmap Color definitions|Color definitions]]: _VGAColors_ , _CSSColors_...
74- * [[BGRABitmap Geometry types|Geometry types]]: _TPointF_ , кривые Берзье, _TArcDef_...
75- * [[BGRABitmap Miscellaneous types|Miscellaneous types]]: шрифт, формат изображения, ресэмплинг...
76- * [[TBGRACustomBitmap and IBGRAScanner]]: базовый класс для TBGRABitmap и сканеров
49+- [[BGRABitmap Pixel types/ru|Pixel types and functions]]: *TBGRAPixel*, *THSLAPixel*...
50+- [[BGRABitmap Types imported from Graphics|Types imported from Graphics]]: *TColor*, стиль пера...
51+- [[BGRABitmap Color definitions|Color definitions]]: *VGAColors*, *CSSColors*...
52+- [[BGRABitmap Geometry types|Geometry types]]: *TPointF*, кривые Берзье, *TArcDef*...
53+- [[BGRABitmap Miscellaneous types|Miscellaneous types]]: шрифт, формат изображения, ресэмплинг...
54+- [[TBGRACustomBitmap and IBGRAScanner]]: базовый класс для TBGRABitmap и сканеров
7755
7856#### Установка
7957
80-После распаковки архива BGRA часто не компилируется в Linux. Попробуйте использовать макрос IDE
81-```
82-LCLWidgetType:=gtk2
83-```
58+После распаковки архива BGRA часто не компилируется в Linux. Попробуйте использовать макрос IDE
8459
85-в таких случаях. Тем не менее, некоторые другие части могут не скомпилироваться.
60+` LCLWidgetType:=gtk2`
8661
62+в таких случаях. Тем не менее, некоторые другие части могут не скомпилироваться.
63+
8764#### Простой пример
8865
89-Создайте проект и откройте bgrabitmappackage.lpk с помощью Lazarus. В окне пакета нажмите "Use > Add to Project". Затем в исходном коде основного файла (основная форма или основная программа) добавьте в раздел uses модуль BGRABitmap. Вам также может понадобиться добавить модуль BGRAGraphics, если вы используете определенные типы, которые унаследованы от LCL.
90-```
66+Создайте проект и откройте bgrabitmappackage.lpk с помощью Lazarus. В окне пакета нажмите "Use \> Add to Project". Затем в исходном коде основного файла (основная форма или основная программа) добавьте в раздел uses модуль BGRABitmap. Вам также может понадобиться добавить модуль BGRAGraphics, если вы используете определенные типы, которые унаследованы от LCL.
67+
68+``` pascal
9169Uses
92- Classes, SysUtils, BGRABitmap, BGRABitmapTypes;
70+ Classes, SysUtils, BGRABitmap, BGRABitmapTypes;
9371```
9472
95-Модуль BGRABitmapTypes содержит общие определения, но можно объявить только BGRABitmap для загрузки и отображения растрового изображения. Затем первым шагом является создание объекта [[TBGRABitmap class|TBGRABitmap]]:
96-```
73+Модуль BGRABitmapTypes содержит общие определения, но можно объявить только BGRABitmap для загрузки и отображения растрового изображения. Затем первым шагом является создание объекта [[TBGRABitmap class|TBGRABitmap]]:
74+
75+``` pascal
9776var
98- bmp: TBGRABitmap;
99- begin
100- bmp := TBGRABitmap.Create(100, 100, BGRABlack); // создаем изображение размером 100x100 пикселей с черным фоном
101-
102- bmp.FillRect(20, 20, 60, 60, BGRAWhite, dmSet); // рисуем белый квадрат без прозрачности
103- bmp.FillRect(40, 40, 80, 80, BGRA(0, 0, 255, 128), dmDrawWithTransparency); // рисуем прозрачный синий квадрат
104- ...
105- end;
106-```
77+ bmp: TBGRABitmap;
78+begin
79+ bmp := TBGRABitmap.Create(100, 100, BGRABlack); // создаем изображение размером 100x100 пикселей с черным фоном
10780
108-Наконец, чтобы показать растровое изображение:
81+ bmp.FillRect(20, 20, 60, 60, BGRAWhite, dmSet); // рисуем белый квадрат без прозрачности
82+ bmp.FillRect(40, 40, 80, 80, BGRA(0, 0, 255, 128), dmDrawWithTransparency); // рисуем прозрачный синий квадрат
83+ ...
84+end;
10985```
86+
87+Наконец, чтобы показать растровое изображение:
88+
89+``` pascal
11090procedure TFMain.FormPaint(Sender: TObject);
111- begin
112- bmp.Draw(Canvas, 0, 0, True); // рисуем растровое изображение в непрозрачном режиме (быстрее)
113- end;
91+begin
92+ bmp.Draw(Canvas, 0, 0, True); // рисуем растровое изображение в непрозрачном режиме (быстрее)
93+end;
11494```
11595
116-Смотрите полный исходный код в [[BGRABitmap tutorial 1|tutorial 1]].
96+Смотрите полный исходный код в [[BGRABitmap tutorial 1|tutorial 1]].
11797
11898### Понятия
11999
120-Пиксели в растровом изображении с прозрачностью хранятся с 4 значениями, здесь 4 байта [расположены] в порядке Blue, Green, Red, Alpha. Последний канал определяет уровень непрозрачности (0 означает прозрачный, 255 означает непрозрачный), другие каналы определяют цвет и яркость.
100+Пиксели в растровом изображении с прозрачностью хранятся с 4 значениями, здесь 4 байта \[расположены\] в порядке Blue, Green, Red, Alpha. Последний канал определяет уровень непрозрачности (0 означает прозрачный, 255 означает непрозрачный), другие каналы определяют цвет и яркость.
121101
122-Есть два основных режима рисования. Первый состоит в замене содержимого информации пикселя, второй состоит в смешении уже имеющегося пикселя с новым, который называется альфа-смешением.
102+Есть два основных режима рисования. Первый состоит в замене содержимого информации пикселя, второй состоит в смешении уже имеющегося пикселя с новым, который называется альфа-смешением.
123103
124-Функции BGRABitmap предлагают 4 режима:
104+Функции BGRABitmap предлагают 4 режима:
125105
126- * dmSet : заменяет четыре байта нарисованного пикселя, прозрачность не обрабатывается.
127- * dmDrawWithTransparency : рисует с альфа-каналом и с гамма-коррекцией (см. ниже).
128- * dmFastBlend или dmLinearBlend : рисует с альфа-каналом, но без гамма-коррекции (быстрее, но влечет за собой искажения цвета с низкой интенсивностью).
129- * dmXor : применяет Xor к каждому компоненту, включая альфа (если вы хотите инвертировать цвет, но сохранить альфа, используйте BGRA (255,255,255,0)).
106+- dmSet : заменяет четыре байта нарисованного пикселя, прозрачность не обрабатывается.
107+- dmDrawWithTransparency : рисует с альфа-каналом и с гамма-коррекцией (см. ниже).
108+- dmFastBlend или dmLinearBlend : рисует с альфа-каналом, но без гамма-коррекции (быстрее, но влечет за собой искажения цвета с низкой интенсивностью).
109+- dmXor : применяет Xor к каждому компоненту, включая альфа (если вы хотите инвертировать цвет, но сохранить альфа, используйте BGRA (255,255,255,0)).
130110
131111### Встроенные функции рисования
132112
133- * рисование/стирание пикселей
134- * рисование линии с или без сглаживания
135- * координаты с плавающей точкой
136- * ширина пера с плавающей точкой
137- * прямоугольник (рамка или заливка)
138- * эллипс и многоугольники со сглаживанием
139- * расчет сплайна (скругленная кривая)
140- * простая заливка (Floodfill) или прогрессивная заливка
141- * отрисовка цветового градиента (линейная, радиальная ...)
142- * скругленные прямоугольники
143- * тексты с прозрачностью
113+- рисование/стирание пикселей
114+- рисование линии с или без сглаживания
115+- координаты с плавающей точкой
116+- ширина пера с плавающей точкой
117+- прямоугольник (рамка или заливка)
118+- эллипс и многоугольники со сглаживанием
119+- расчет сплайна (скругленная кривая)
120+- простая заливка (Floodfill) или прогрессивная заливка
121+- отрисовка цветового градиента (линейная, радиальная ...)
122+- скругленные прямоугольники
123+- тексты с прозрачностью
144124
145125### Рисование с помощью холста
146126
147-Можно рисовать с помощью объекта _Canvas_ , с обычными функциями, но без сглаживания. Непрозрачность рисования определяется свойством _CanvasOpacity_. Этот способ медленнее, потому что он требует преобразования изображения. Если вы можете, используйте вместо этого _CanvasBGRA_ , который позволяет [использовать] прозрачность и сглаживание, имея те же имена функций, что и в TCanvas.
127+Можно рисовать с помощью объекта *Canvas*, с обычными функциями, но без сглаживания. Непрозрачность рисования определяется свойством *CanvasOpacity*. Этот способ медленнее, потому что он требует преобразования изображения. Если вы можете, используйте вместо этого *CanvasBGRA*, который позволяет \[использовать\] прозрачность и сглаживание, имея те же имена функций, что и в TCanvas.
148128
149129### Прямой доступ к пикселям
150130
151-Для доступа к пикселям есть два свойства: _Data_ и _Scanline_. Первый дает указатель на первый пиксель изображения, а второй дает указатель на первый пиксель данной строки.
152-```
131+Для доступа к пикселям есть два свойства: *Data* и *Scanline*. Первый дает указатель на первый пиксель изображения, а второй дает указатель на первый пиксель данной строки.
132+
133+``` pascal
153134var
154- bmp: TBGRABitmap;
155- p: PBGRAPixel;
156- n: integer;
157-
158- begin
159- bmp := TBGRABitmap.Create('image.png');
160- p := bmp.Data;
161- for n := bmp.NbPixels-1 downto 0 do
162- begin
163- p^.red := not p^.red; // инвертируем красный канал
164- inc(p);
165- end;
166- bmp.InvalidateBitmap; // обратите внимание, что мы получили доступ к пикселям напрямую
167- bmp.Draw(Canvas, 0, 0, True);
168- bmp.Free;
169- end;
135+ bmp: TBGRABitmap;
136+ p: PBGRAPixel;
137+ n: integer;
138+
139+begin
140+ bmp := TBGRABitmap.Create('image.png');
141+ p := bmp.Data;
142+ for n := bmp.NbPixels-1 downto 0 do
143+ begin
144+ p^.red := not p^.red; // инвертируем красный канал
145+ inc(p);
146+ end;
147+ bmp.InvalidateBitmap; // обратите внимание, что мы получили доступ к пикселям напрямую
148+ bmp.Draw(Canvas, 0, 0, True);
149+ bmp.Free;
150+end;
170151```
171152
172-Необходимо вызвать функцию _InvalidateBitmap_ , чтобы пересобрать изображение, например, при следующем вызове _Draw_. Обратите внимание, что порядок строк может быть обратным, в зависимости от свойства _LineOrder_.
153+Необходимо вызвать функцию *InvalidateBitmap*, чтобы пересобрать изображение, например, при следующем вызове *Draw*. Обратите внимание, что порядок строк может быть обратным, в зависимости от свойства *LineOrder*.
173154
174-Смотрите также сравнение между [[Fast direct pixel access|direct pixel access methods]].
155+Смотрите также сравнение между [[Fast direct pixel access|direct pixel access methods]].
175156
176157### Манипуляции с изображениями
177158
178-Доступные фильтры (с префиксом Filter):
159+Доступные фильтры (с префиксом Filter):
179160
180- * Radial blur : ненаправленное размытие
181- * Motion blur : направленное размытие
182- * Custom blur : размытие по маске
161+- Radial blur : ненаправленное размытие
162+- Motion blur : направленное размытие
163+- Custom blur : размытие по маске
183164
184- * Median : вычисляет медиану цветов вокруг каждого пикселя, что смягчает углы
185- * Pixelate : упрощает изображение с прямоугольниками одного цвета
186- * Smooth : смягчает все изображение, дополнительно к [фильтру] Sharpen
187- * Sharpen :делает контуры более четкими, дополнительно к [фильтру] Smooth
165+- Median : вычисляет медиану цветов вокруг каждого пикселя, что смягчает углы
166+- Pixelate : упрощает изображение с прямоугольниками одного цвета
167+- Smooth : смягчает все изображение, дополнительно к \[фильтру\] Sharpen
168+- Sharpen :делает контуры более четкими, дополнительно к \[фильтру\] Smooth
188169
189- * Contour : рисует контуры на белом фоне (как карандашный рисунок)
190- * Emboss : рисует контуры с тенью
191- * EmbossHighlight : рисует контуры выделения, определенного в оттенках серого
170+- Contour : рисует контуры на белом фоне (как карандашный рисунок)
171+- Emboss : рисует контуры с тенью
172+- EmbossHighlight : рисует контуры выделения, определенного в оттенках серого
192173
193- * Grayscale : преобразует цвета в оттенки серого с гамма-коррекцией
194- * Normalize : использует весь спектр яркости цвета
174+- Grayscale : преобразует цвета в оттенки серого с гамма-коррекцией
175+- Normalize : использует весь спектр яркости цвета
195176
196- * Rotate : вращение изображения вокруг точки
197- * Sphere : искажает изображение, чтобы оно выглядело, как проецируемое на сферу
198- * Twirl : искажает изображение с эффектом закручивания
199- * Cylinder : искажает изображение, чтобы оно выглядело, как проецируемое на цилиндр
200- * Plane : вычисляет проекцию с высокой точностью на горизонтальную плоскость. Это довольно медленно.
201- * SmartZoom3 : изменяет размер изображения х3 и определяет границы, чтобы иметь полезный зум с древними игровыми спрайтами
177+- Rotate : вращение изображения вокруг точки
178+- Sphere : искажает изображение, чтобы оно выглядело, как проецируемое на сферу
179+- Twirl : искажает изображение с эффектом закручивания
180+- Cylinder : искажает изображение, чтобы оно выглядело, как проецируемое на цилиндр
181+- Plane : вычисляет проекцию с высокой точностью на горизонтальную плоскость. Это довольно медленно.
182+- SmartZoom3 : изменяет размер изображения х3 и определяет границы, чтобы иметь полезный зум с древними игровыми спрайтами
202183
203-Некоторые функции не имеют префикса Filter, потому что они не возвращают вновь выделенное изображение. Они изменяют изображение на месте:
184+Некоторые функции не имеют префикса Filter, потому что они не возвращают вновь выделенное изображение. Они изменяют изображение на месте:
204185
205- * VerticalFlip : переворачивает изображение по вертикали
206- * HorizontalFlip : переворачивает изображение по горизонтали
207- * Negative : инвертирует цвета
208- * LinearNegative : инверсия без гамма-коррекции
209- * SwapRedBlue : меняет местами красный и синий каналы (для конвертации между BGRA и RGBA)
210- * ConvertToLinearRGB : конвертирует из sRGB в RGB. Обратите внимание, что формат, используемый BGRABitmap - **sRGB** при использовании _dmDrawWithTransparency_ и **RGB** при использовании _dmLinearBlend_.
211- * ConvertFromLinearRGB : конвертирует из RGB в sRGB.
186+- VerticalFlip : переворачивает изображение по вертикали
187+- HorizontalFlip : переворачивает изображение по горизонтали
188+- Negative : инвертирует цвета
189+- LinearNegative : инверсия без гамма-коррекции
190+- SwapRedBlue : меняет местами красный и синий каналы (для конвертации между BGRA и RGBA)
191+- ConvertToLinearRGB : конвертирует из sRGB в RGB. Обратите внимание, что формат, используемый BGRABitmap - **sRGB** при использовании *dmDrawWithTransparency* и **RGB** при использовании *dmLinearBlend*.
192+- ConvertFromLinearRGB : конвертирует из RGB в sRGB.
212193
213194### Сочетание изображений
214195
215-PutImage является основной функцией рисования изображений, а BlendImage позволяет комбинировать изображения, как слои программ для редактирования изображений. Доступны следующие режимы:
196+PutImage является основной функцией рисования изображений, а BlendImage позволяет комбинировать изображения, как слои программ для редактирования изображений. Доступны следующие режимы:
216197
217- * LinearBlend : простое наложение без гамма-коррекции (эквивалент dmFastBlend)
218- * Transparent : наложение с гамма-коррекцией
219- * Multiply : умножение значений цвета (с гамма-коррекцией)
220- * LinearMultiply : умножение значений цвета (без гамма-коррекции)
221- * Additive : добавление значений цвета (с гамма-коррекцией)
222- * LinearAdd : добавление значений цвета (без гамма-коррекции)
223- * Difference : разница значений цвета (с гамма-коррекцией)
224- * LinearDifference : разница значений цвета (без гамма-коррекции)
225- * Negation : устранение общих цветов (с гамма-коррекцией)
226- * LinearNegation : исчезновение общих цвета (без гамма-коррекции)
227- * Reflect, Glow : для световых эффектов
228- * ColorBurn, ColorDodge, Overlay, Screen : разные фильтры
229- * Lighten : сохраняет самые светлые цветовые значения
230- * Darken : сохраняет самые темные значения цвета
231- * Xor : исключающее ИЛИ цветовых значений
198+- LinearBlend : простое наложение без гамма-коррекции (эквивалент dmFastBlend)
199+- Transparent : наложение с гамма-коррекцией
200+- Multiply : умножение значений цвета (с гамма-коррекцией)
201+- LinearMultiply : умножение значений цвета (без гамма-коррекции)
202+- Additive : добавление значений цвета (с гамма-коррекцией)
203+- LinearAdd : добавление значений цвета (без гамма-коррекции)
204+- Difference : разница значений цвета (с гамма-коррекцией)
205+- LinearDifference : разница значений цвета (без гамма-коррекции)
206+- Negation : устранение общих цветов (с гамма-коррекцией)
207+- LinearNegation : исчезновение общих цвета (без гамма-коррекции)
208+- Reflect, Glow : для световых эффектов
209+- ColorBurn, ColorDodge, Overlay, Screen : разные фильтры
210+- Lighten : сохраняет самые светлые цветовые значения
211+- Darken : сохраняет самые темные значения цвета
212+- Xor : исключающее ИЛИ цветовых значений
232213
233-Эти режимы можно использовать в TBGRALayeredBitmap, что упрощает эту задачу, поскольку BlendImage предоставляет только основные операции смешивания.
214+Эти режимы можно использовать в TBGRALayeredBitmap, что упрощает эту задачу, поскольку BlendImage предоставляет только основные операции смешивания.
234215
235216### Скриншоты
236217
237- * [![Lazpaint contour.png](/wiki-images/5/5d/Lazpaint_contour.png)](</File:Lazpaint_contour.png>)
238-
239-
240-
241- * [![Lazpaint curve redim.png](/wiki-images/2/25/Lazpaint_curve_redim.png)](</File:Lazpaint_curve_redim.png>)
242-
243-
244-
245- * [![Bgra wirecube.png](/wiki-images/2/23/Bgra_wirecube.png)](</File:Bgra_wirecube.png>)
246-
247-
248-
249- * [![Bgra chessboard.jpg](/wiki-images/b/b0/Bgra_chessboard.jpg)](</File:Bgra_chessboard.jpg>)
218+- ![](/wiki-images/5/5d/Lazpaint_contour.png)
250219
251-
220+* ![](/wiki-images/2/25/Lazpaint_curve_redim.png)\
221+* ![](/wiki-images/2/23/Bgra_wirecube.png)\
222+* ![](/wiki-images/b/b0/Bgra_chessboard.jpg)\
252223
253224### Лицензия
254225
255-модифицированная LGPL
226+модифицированная LGPL
256227
257-Автор: [Johann ELSASS](<http://johann-elsass.net>) ([Facebook](<http://www.facebook.com/johann.elsass.1>))
228+Автор: [Johann ELSASS](http://johann-elsass.net) ([Facebook](http://www.facebook.com/johann.elsass.1))
258229
259230### Скачать
260231
261232Последняя версия: <https://github.com/bgrabitmap/bgrabitmap/releases>
262233
263234Sourceforge with [[LazPaint]]: <http://sourceforge.net/projects/lazpaint/files/src/>
264235
265236GitHub: <https://github.com/bgrabitmap/>
266237
267238---
268-*From the Free Pascal wiki, page "BGRABitmap/ru", as the Internet Archive kept it on 2024-08-08. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
239+*From the Free Pascal wiki, page "BGRABitmap/ru", as it stood on 2022-09-11 after a change by Circular, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history