Показать сообщение отдельно
Старый 13.05.2011, 13:34   #2
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений
(для 271 пользователей)
Ответ: Lib_imgs: выводим картинку на картинку

/*
    Lib_imgs
    (c) barsunduk
    май, норябрь 2011
    
    библиотека для работы с изображениями
*/

// ******************************************************************
// функции работы с картинками

// копирует часть экрана, вместо ширины и высоты указывать координаты второго угла
function copyxxyy(x1, y1, x2, y2: integer): image;

// возвращает экран
function copyscr: image;

// копировать часть картинки
function copyrect(img: image; x, y, w, h: integer): image;

// установить текущий цвет экрана
procedure setcolorint(col: integer);

// установить текущий цвет экрана (в 16-ричном виде)
procedure setcolorhex(col: string);

// рисует картинку imgSource на картинке imgDest
function draw2image(imgSource, imgDest: image; x, y: integer): image;

// создает прозрачную картинку
function createimage(w, h: integer): image;

// изменить размер картинки
function resize(img: image; w, h: integer): image;

// установить цвет
procedure setcolorint(col: integer);

// установить цвет
procedure setcolorhex(col: string);

// быстрая заливка экрана цветом col
procedure cls(col: integer);

// заливка экрана полупрозрачным цветом col
procedure clsa(col: integer);

// нарисовать точку на экране (можно полупрозрачную)
procedure point(x, y, col: integer);

// получить цвет точки экрана
function getpoint(x, y: integer): integer;

// установить цвет пера для рисования на картинках
procedure imgsetcolor(color: integer);

// получить цвет пера для рисования на картинках
function imggetcolor: integer;

// установить непрозрачность пера для рисования на картинках (0/1)
procedure solid(value: integer);

// получить состояние непрозрачности пера для рисования на картинках (0/1)
function getsolid: integer;

// линия на картинке
function imgline(img: image; x1, y1, x2, y2: integer): image;

// прямоугольник на картинке
function imgrect(img: image; x, y, w, h: integer): image;

// закрашенный прямоугольник на картинке
function imgfillrect(img: image; x, y, w, h: integer): image;

// эллипс на картинке
function imgellipse(img: image; x, y, w, h: integer): image;

// залитый эллипс на картинке
function imgfillellipse(img: image; x, y, w, h: integer): image;

// треугольник на картинке
function imgtriangle(img: image; x1, y1, x2, y2, x3, y3: integer): image;

// закрашенный треугольник на картинке
function imgfilltriangle(img: image; x1, y1, x2, y2, x3, y3: integer): image;

// заливка на картинке
function imgfill(img: image; x, y: integer): image;

// сектор на картинке
function imgarc(img: image; x, y, w, h, a1, a2: integer): image;

// кривая на картинке (все опорные точки лежат на кривой)
function imgbow(img: image; x1, y1, x2, y2, x3, y3: integer): image;

// кривая на картинке (2-я опорная точка не лежит на кривой)
function imgbezier(img: image; x1, y1, x2, y2, x3, y3: integer): image;

// заливка экрана
procedure scrfill(x, y);

// получить цвет точки картинки (медленная функция)
function getimagepoint(img: image; x, y: integer): integer;

// меняет каналы каждого пикселя, прибавляя к ним значения (da, dr, dg, db)
// т.е. если все значения задать = 0, только da = -128 - можно в половину уменьшить прозрачность
function addargb(img: image img; da, dr, dg, db: integer): image;

// устанавливает прозрачность всех пикселов картинки
// (кроме совершенно прозрачных)
function setalpha(img: image img; a: integer): image;

// ******************************************************************
// битмапы, работа с пикселями картинки

// создать битовую карту 1
procedure bmp1create (w, h: integer);

// удалить битовую карту
procedure bmp1free;

// затолкать в битмап картинку (можно использовать вместо bmpcreate)
// размеры битмапа изменятся под размер картинки
procedure bmp1setimage(img: image);

// создать картинку из битмапа
function bmp1getimage: image;

// установить пиксель[x, y] в цвет col
procedure setpixel1(x, y, col: integer);

// извлечь пиксель [x, y]
function getpixel1(x, y: integer): integer;

// заливка (можно сделать полупрозрачную)
procedure bmp1fill(x, y, col: integer);

// линия (можно сделать полупрозрачную)
procedure bmp1line(x1, y1, x2, y2, col: integer);

// дуга
procedure bmp1bow(x1, y1, x2, y2, col: integer);

// возвращает ширину битмапа
function bmp1width: integer;

// возвращает высоту битмапа
function bmp1height: integer;

// создать битовую карту 2
procedure bmp2create (w, h: integer);

// удалить битовую карту
procedure bmp2free;

// затолкать в битмап картинку (можно использовать вместо bmpcreate)
// размеры битмапа изменятся под размер картинки
procedure bmp2setimage(img: image);

// создать картинку из битмапа
function bmp2getimage: image;

// установить пиксель[x, y] в цвет col
procedure setpixel2(x, y, col: integer);

// извлечь пиксель [x, y]
function getpixel2(x, y: integer): integer;

// заливка (можно сделать полупрозрачную)
procedure bmp2fill(x, y, col: integer);

// линия (можно сделать полупрозрачную)
procedure bmp2line(x1, y1, x2, y2, col: integer);

// дуга
procedure bmp2bow(x1, y1, x2, y2, col: integer);

// возвращает ширину битмапа
function bmp2width: integer;

// возвращает высоту битмапа
function bmp2height: integer;

// создать битовую карту 2
procedure bmpcreate (w, h: integer);

// удалить битовую карту
procedure bmp2free;

// ********************************************************
// функции, которые могут пригодиться... или не пригодиться

// выделение каналов:
function getAlpha(col: integer): integer;
function 
getRed(col: integer): integer;
function 
getGreen(col: integer): integer;
function 
getBlue(col: integer): integer;

// каналы => integer
function argb2int(alpha, red, green, blue: integer): integer;

// результат наложения цветов с учетом степени прозрачности обоих цветов
function pixMix(colSrc, colBack: integer): integer;

// Copy как в Delphi с защитой от дурака
function sCopy(s: string; offset, count: integer): string;

// Delete как в Delphi с защитой от дурака
function sDelete(s: string; offset, count: integer): string;

// попатченый перевод из HEX в INT, не теряет старший байт
function hex2int(hex: string): integer;

// попатченый перевод из HEX в INT, не теряет старший байт
function int2hex(i: integer): string; 
__________________
to be or not to be - it's not a question!
2b or not 2b = ff

Последний раз редактировалось barsunduk, 16.11.2011 в 22:59. Причина: поправил, добавил...
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо barsunduk за это полезное сообщение:
cherepets (13.05.2011), YellowAfterlife (14.05.2011), Zorba (16.08.2011)