Sign in Join
Wiki copytemporary

BGRABitmap/ru: what changed

Revision 1 to 2. 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+
13См.также: [[Developing with Graphics/ru|Developing with Graphics]]
24
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+
325### Описание
426
5-**BGRABitmap** - это набор модулей, предназначенных для изменения и создания изображений с прозрачностью (альфа-канал). Прямой пиксельный доступ позволяет быстро обрабатывать изображения. Библиотека была протестирована на Windows, Ubuntu и Mac OS X (последняя версия не работает на Mac), с наборами виджетов win32, gtk1, gtk2 и carbon.
27+**BGRABitmap** \- это набор модулей, предназначенных для изменения и создания изображений с прозрачностью (альфа-канал). Прямой пиксельный доступ позволяет быстро обрабатывать изображения. Библиотека была протестирована на Windows, Ubuntu и Mac OS X (последняя версия не работает на Mac), с наборами виджетов win32, gtk1, gtk2 и carbon.
628
7-Основным классом является [[TBGRABitmap class|TBGRABitmap]], который является производным от [[fcl-image|TFPCustomImage]]. Существует также [[TBGRAPtrBitmap class|TBGRAPtrBitmap]], позволяющий редактировать данные BGRA, которые уже распределены. Этот формат состоит из 4 байтов для каждого пикселя (синий, зеленый, красный и альфа в этом порядке).
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 байтов для каждого пикселя (синий, зеленый, красный и альфа в этом порядке).
830
9-Изображение может быть отображено на обычном Canvas или на [[BGRABitmap and OpenGL|OpenGL surface]].
31+Изображение может быть отображено на обычном Canvas или на [[BGRABitmap and OpenGL|OpenGL surface]].
1032
1133### Дополнительные пакеты
1234
13-Некоторые пакеты используют BGRABitmap для обеспечения элементов управления приятной графикой:
35+Некоторые пакеты используют BGRABitmap для обеспечения элементов управления приятной графикой:
1436
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.
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.
2042
21-Некоторые примеры в папке с примерами используют BGRAControls и BGLControls. Вам может понадобиться установить их, чтобы открыть эти проекты в Lazarus. См. [[Install Packages]].
43+Некоторые примеры в папке с примерами используют BGRAControls и BGLControls. Вам может понадобиться установить их, чтобы открыть эти проекты в Lazarus. См. [[Install Packages]].
2244
2345### Использование BGRABitmap
2446
2547#### Руководства
2648
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)
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>)
3254
3355#### Обзор
3456
35-Функции имеют длинные имена, чтобы быть понятными. Почти все доступно в виде функции или с помощью свойства объекта [[TBGRABitmap class|TBGRABitmap]]. Например, вы можете использовать CanvasBGRA, чтобы иметь некоторые холсты, похожие на TCanvas (с прозрачностью и сглаживанием) и Canvas2D, чтобы иметь те же функции, что и [HTML canvas](https://developer.mozilla.org/en/HTML:Canvas).
57+Функции имеют длинные имена, чтобы быть понятными. Почти все доступно в виде функции или с помощью свойства объекта [[TBGRABitmap class|TBGRABitmap]]. Например, вы можете использовать CanvasBGRA, чтобы иметь некоторые холсты, похожие на TCanvas (с прозрачностью и сглаживанием) и Canvas2D, чтобы иметь те же функции, что и [HTML canvas](<https://developer.mozilla.org/en/HTML:Canvas>).
3658
37-Некоторые специальные функции требуют использования модулей, но они могут вам не понадобиться:
59+Некоторые специальные функции требуют использования модулей, но они могут вам не понадобиться:
3860
39-- TBGRAMultishapeFiller иметь сглаженные соединения многоугольников в BGRAPolygon
40-- TBGRATextEffect в BGRATextFX
41-- 2D преобразования находятся в BGRATransform
42-- TBGRAScene3D в BGRAScene3D
43-- Если вам нужны слои, BGRALayers предоставляет TBGRALayeredBitmap
61+ * TBGRAMultishapeFiller иметь сглаженные соединения многоугольников в BGRAPolygon
62+ * TBGRATextEffect в BGRATextFX
63+ * 2D преобразования находятся в BGRATransform
64+ * TBGRAScene3D в BGRAScene3D
65+ * Если вам нужны слои, BGRALayers предоставляет TBGRALayeredBitmap
4466
45-Двойная буферизация на самом деле не является частью BGRABitmap, потому что она больше о том, как обрабатывать формы. Для двойной буферизации вы можете использовать TBGRAVirtualScreen, который находится в пакете [[BGRAControls]]. Кроме того, двойная буферизация в BGRABitmap работает как любая двойная буферизация. Вам нужно иметь растровое изображение, в котором вы храните свой чертеж и которое вы отображаете с помощью одной инструкции Draw.
67+Двойная буферизация на самом деле не является частью BGRABitmap, потому что она больше о том, как обрабатывать формы. Для двойной буферизации вы можете использовать TBGRAVirtualScreen, который находится в пакете [[BGRAControls]]. Кроме того, двойная буферизация в BGRABitmap работает как любая двойная буферизация. Вам нужно иметь растровое изображение, в котором вы храните свой чертеж и которое вы отображаете с помощью одной инструкции Draw.
4668
4769#### Ссылка на модуль BGRABitmapTypes
4870
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 и сканеров
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 и сканеров
5577
5678#### Установка
5779
58-После распаковки архива BGRA часто не компилируется в Linux. Попробуйте использовать макрос IDE
59-
60-` LCLWidgetType:=gtk2`
80+После распаковки архива BGRA часто не компилируется в Linux. Попробуйте использовать макрос IDE
81+```
82+LCLWidgetType:=gtk2
83+```
6184
62-в таких случаях. Тем не менее, некоторые другие части могут не скомпилироваться.
85+в таких случаях. Тем не менее, некоторые другие части могут не скомпилироваться.
6386
6487#### Простой пример
6588
66-Создайте проект и откройте bgrabitmappackage.lpk с помощью Lazarus. В окне пакета нажмите "Use \> Add to Project". Затем в исходном коде основного файла (основная форма или основная программа) добавьте в раздел uses модуль BGRABitmap. Вам также может понадобиться добавить модуль BGRAGraphics, если вы используете определенные типы, которые унаследованы от LCL.
67-
68-``` pascal
89+Создайте проект и откройте bgrabitmappackage.lpk с помощью Lazarus. В окне пакета нажмите "Use > Add to Project". Затем в исходном коде основного файла (основная форма или основная программа) добавьте в раздел uses модуль BGRABitmap. Вам также может понадобиться добавить модуль BGRAGraphics, если вы используете определенные типы, которые унаследованы от LCL.
90+```
6991Uses
70- Classes, SysUtils, BGRABitmap, BGRABitmapTypes;
92+ Classes, SysUtils, BGRABitmap, BGRABitmapTypes;
7193```
7294
73-Модуль BGRABitmapTypes содержит общие определения, но можно объявить только BGRABitmap для загрузки и отображения растрового изображения. Затем первым шагом является создание объекта [[TBGRABitmap class|TBGRABitmap]]:
74-
75-``` pascal
95+Модуль BGRABitmapTypes содержит общие определения, но можно объявить только BGRABitmap для загрузки и отображения растрового изображения. Затем первым шагом является создание объекта [[TBGRABitmap class|TBGRABitmap]]:
96+```
7697var
77- bmp: TBGRABitmap;
78-begin
79- bmp := TBGRABitmap.Create(100, 100, BGRABlack); // создаем изображение размером 100x100 пикселей с черным фоном
80-
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;
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;
85106```
86107
87-Наконец, чтобы показать растровое изображение:
88-
89-``` pascal
108+Наконец, чтобы показать растровое изображение:
109+```
90110procedure TFMain.FormPaint(Sender: TObject);
91-begin
92- bmp.Draw(Canvas, 0, 0, True); // рисуем растровое изображение в непрозрачном режиме (быстрее)
93-end;
111+ begin
112+ bmp.Draw(Canvas, 0, 0, True); // рисуем растровое изображение в непрозрачном режиме (быстрее)
113+ end;
94114```
95115
96-Смотрите полный исходный код в [[BGRABitmap tutorial 1|tutorial 1]].
116+Смотрите полный исходный код в [[BGRABitmap tutorial 1|tutorial 1]].
97117
98118### Понятия
99119
100-Пиксели в растровом изображении с прозрачностью хранятся с 4 значениями, здесь 4 байта \[расположены\] в порядке Blue, Green, Red, Alpha. Последний канал определяет уровень непрозрачности (0 означает прозрачный, 255 означает непрозрачный), другие каналы определяют цвет и яркость.
120+Пиксели в растровом изображении с прозрачностью хранятся с 4 значениями, здесь 4 байта [расположены] в порядке Blue, Green, Red, Alpha. Последний канал определяет уровень непрозрачности (0 означает прозрачный, 255 означает непрозрачный), другие каналы определяют цвет и яркость.
101121
102-Есть два основных режима рисования. Первый состоит в замене содержимого информации пикселя, второй состоит в смешении уже имеющегося пикселя с новым, который называется альфа-смешением.
122+Есть два основных режима рисования. Первый состоит в замене содержимого информации пикселя, второй состоит в смешении уже имеющегося пикселя с новым, который называется альфа-смешением.
103123
104-Функции BGRABitmap предлагают 4 режима:
124+Функции BGRABitmap предлагают 4 режима:
105125
106-- dmSet : заменяет четыре байта нарисованного пикселя, прозрачность не обрабатывается.
107-- dmDrawWithTransparency : рисует с альфа-каналом и с гамма-коррекцией (см. ниже).
108-- dmFastBlend или dmLinearBlend : рисует с альфа-каналом, но без гамма-коррекции (быстрее, но влечет за собой искажения цвета с низкой интенсивностью).
109-- dmXor : применяет Xor к каждому компоненту, включая альфа (если вы хотите инвертировать цвет, но сохранить альфа, используйте BGRA (255,255,255,0)).
126+ * dmSet : заменяет четыре байта нарисованного пикселя, прозрачность не обрабатывается.
127+ * dmDrawWithTransparency : рисует с альфа-каналом и с гамма-коррекцией (см. ниже).
128+ * dmFastBlend или dmLinearBlend : рисует с альфа-каналом, но без гамма-коррекции (быстрее, но влечет за собой искажения цвета с низкой интенсивностью).
129+ * dmXor : применяет Xor к каждому компоненту, включая альфа (если вы хотите инвертировать цвет, но сохранить альфа, используйте BGRA (255,255,255,0)).
110130
111131### Встроенные функции рисования
112132
113-- рисование/стирание пикселей
114-- рисование линии с или без сглаживания
115-- координаты с плавающей точкой
116-- ширина пера с плавающей точкой
117-- прямоугольник (рамка или заливка)
118-- эллипс и многоугольники со сглаживанием
119-- расчет сплайна (скругленная кривая)
120-- простая заливка (Floodfill) или прогрессивная заливка
121-- отрисовка цветового градиента (линейная, радиальная ...)
122-- скругленные прямоугольники
123-- тексты с прозрачностью
133+ * рисование/стирание пикселей
134+ * рисование линии с или без сглаживания
135+ * координаты с плавающей точкой
136+ * ширина пера с плавающей точкой
137+ * прямоугольник (рамка или заливка)
138+ * эллипс и многоугольники со сглаживанием
139+ * расчет сплайна (скругленная кривая)
140+ * простая заливка (Floodfill) или прогрессивная заливка
141+ * отрисовка цветового градиента (линейная, радиальная ...)
142+ * скругленные прямоугольники
143+ * тексты с прозрачностью
124144
125145### Рисование с помощью холста
126146
127-Можно рисовать с помощью объекта *Canvas*, с обычными функциями, но без сглаживания. Непрозрачность рисования определяется свойством *CanvasOpacity*. Этот способ медленнее, потому что он требует преобразования изображения. Если вы можете, используйте вместо этого *CanvasBGRA*, который позволяет \[использовать\] прозрачность и сглаживание, имея те же имена функций, что и в TCanvas.
147+Можно рисовать с помощью объекта _Canvas_ , с обычными функциями, но без сглаживания. Непрозрачность рисования определяется свойством _CanvasOpacity_. Этот способ медленнее, потому что он требует преобразования изображения. Если вы можете, используйте вместо этого _CanvasBGRA_ , который позволяет [использовать] прозрачность и сглаживание, имея те же имена функций, что и в TCanvas.
128148
129149### Прямой доступ к пикселям
130150
131-Для доступа к пикселям есть два свойства: *Data* и *Scanline*. Первый дает указатель на первый пиксель изображения, а второй дает указатель на первый пиксель данной строки.
132-
133-``` pascal
151+Для доступа к пикселям есть два свойства: _Data_ и _Scanline_. Первый дает указатель на первый пиксель изображения, а второй дает указатель на первый пиксель данной строки.
152+```
134153var
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;
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;
151170```
152171
153-Необходимо вызвать функцию *InvalidateBitmap*, чтобы пересобрать изображение, например, при следующем вызове *Draw*. Обратите внимание, что порядок строк может быть обратным, в зависимости от свойства *LineOrder*.
172+Необходимо вызвать функцию _InvalidateBitmap_ , чтобы пересобрать изображение, например, при следующем вызове _Draw_. Обратите внимание, что порядок строк может быть обратным, в зависимости от свойства _LineOrder_.
154173
155-Смотрите также сравнение между [[Fast direct pixel access|direct pixel access methods]].
174+Смотрите также сравнение между [[Fast direct pixel access|direct pixel access methods]].
156175
157176### Манипуляции с изображениями
158177
159-Доступные фильтры (с префиксом Filter):
178+Доступные фильтры (с префиксом Filter):
160179
161-- Radial blur : ненаправленное размытие
162-- Motion blur : направленное размытие
163-- Custom blur : размытие по маске
180+ * Radial blur : ненаправленное размытие
181+ * Motion blur : направленное размытие
182+ * Custom blur : размытие по маске
164183
165-- Median : вычисляет медиану цветов вокруг каждого пикселя, что смягчает углы
166-- Pixelate : упрощает изображение с прямоугольниками одного цвета
167-- Smooth : смягчает все изображение, дополнительно к \[фильтру\] Sharpen
168-- Sharpen :делает контуры более четкими, дополнительно к \[фильтру\] Smooth
184+ * Median : вычисляет медиану цветов вокруг каждого пикселя, что смягчает углы
185+ * Pixelate : упрощает изображение с прямоугольниками одного цвета
186+ * Smooth : смягчает все изображение, дополнительно к [фильтру] Sharpen
187+ * Sharpen :делает контуры более четкими, дополнительно к [фильтру] Smooth
169188
170-- Contour : рисует контуры на белом фоне (как карандашный рисунок)
171-- Emboss : рисует контуры с тенью
172-- EmbossHighlight : рисует контуры выделения, определенного в оттенках серого
189+ * Contour : рисует контуры на белом фоне (как карандашный рисунок)
190+ * Emboss : рисует контуры с тенью
191+ * EmbossHighlight : рисует контуры выделения, определенного в оттенках серого
173192
174-- Grayscale : преобразует цвета в оттенки серого с гамма-коррекцией
175-- Normalize : использует весь спектр яркости цвета
193+ * Grayscale : преобразует цвета в оттенки серого с гамма-коррекцией
194+ * Normalize : использует весь спектр яркости цвета
176195
177-- Rotate : вращение изображения вокруг точки
178-- Sphere : искажает изображение, чтобы оно выглядело, как проецируемое на сферу
179-- Twirl : искажает изображение с эффектом закручивания
180-- Cylinder : искажает изображение, чтобы оно выглядело, как проецируемое на цилиндр
181-- Plane : вычисляет проекцию с высокой точностью на горизонтальную плоскость. Это довольно медленно.
182-- SmartZoom3 : изменяет размер изображения х3 и определяет границы, чтобы иметь полезный зум с древними игровыми спрайтами
196+ * Rotate : вращение изображения вокруг точки
197+ * Sphere : искажает изображение, чтобы оно выглядело, как проецируемое на сферу
198+ * Twirl : искажает изображение с эффектом закручивания
199+ * Cylinder : искажает изображение, чтобы оно выглядело, как проецируемое на цилиндр
200+ * Plane : вычисляет проекцию с высокой точностью на горизонтальную плоскость. Это довольно медленно.
201+ * SmartZoom3 : изменяет размер изображения х3 и определяет границы, чтобы иметь полезный зум с древними игровыми спрайтами
183202
184-Некоторые функции не имеют префикса Filter, потому что они не возвращают вновь выделенное изображение. Они изменяют изображение на месте:
203+Некоторые функции не имеют префикса Filter, потому что они не возвращают вновь выделенное изображение. Они изменяют изображение на месте:
185204
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.
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.
193212
194213### Сочетание изображений
195214
196-PutImage является основной функцией рисования изображений, а BlendImage позволяет комбинировать изображения, как слои программ для редактирования изображений. Доступны следующие режимы:
215+PutImage является основной функцией рисования изображений, а BlendImage позволяет комбинировать изображения, как слои программ для редактирования изображений. Доступны следующие режимы:
197216
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 : исключающее ИЛИ цветовых значений
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 : исключающее ИЛИ цветовых значений
213232
214-Эти режимы можно использовать в TBGRALayeredBitmap, что упрощает эту задачу, поскольку BlendImage предоставляет только основные операции смешивания.
233+Эти режимы можно использовать в TBGRALayeredBitmap, что упрощает эту задачу, поскольку BlendImage предоставляет только основные операции смешивания.
215234
216235### Скриншоты
217236
218-- <figure>
219- <img src="Lazpaint_contour.png" title="Lazpaint_contour.png" />
220- <figcaption>Lazpaint_contour.png</figcaption>
221- </figure>
237+ * [![Lazpaint contour.png](/wiki-images/5/5d/Lazpaint_contour.png)](</File:Lazpaint_contour.png>)
222238
223-\
224-* ![](/wiki-images/2/25/Lazpaint_curve_redim.png)\
225-* ![](/wiki-images/2/23/Bgra_wirecube.png)\
226-* ![](/wiki-images/b/b0/Bgra_chessboard.jpg)\
239+
227240
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>)
250+
251+
252+
228253### Лицензия
229254
230-модифицированная LGPL
255+модифицированная LGPL
231256
232-Автор: [Johann ELSASS](http://johann-elsass.net) ([Facebook](http://www.facebook.com/johann.elsass.1))
257+Автор: [Johann ELSASS](<http://johann-elsass.net>) ([Facebook](<http://www.facebook.com/johann.elsass.1>))
233258
234259### Скачать
235260
236261Последняя версия: <https://github.com/bgrabitmap/bgrabitmap/releases>
237262
238263Sourceforge with [[LazPaint]]: <http://sourceforge.net/projects/lazpaint/files/src/>
239264
240265GitHub: <https://github.com/bgrabitmap/>
241266
242267---
243-*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).*
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).*

Back to history