Графика в Delphi - примеры задач на построение графиков, а также компоненты для графики

Изменение гаммы спрайта

Для чего это нужно. Эту технологию можно использовать для выделения “юнита”, или для выделения пункта меню. Одним словом для обозначения чего-либо.
Ну что не поняли? Показываю:
стандартный спрайт : спрайт с измененной гаммой

Как это делатся. Динамически создается новый спрайт с подложкой нужного цвета (фон) и на него накладывается с использованием Альфа смешения наш спрайт. Чем больше величина Альфа, тем больше будет “проявляться” фон, соответственно, если “фон” белый - спрайт будет осветляться.
Что касается TransparentColor - если фоновый цвет спрайта будет отличаться от “подложки” создаваемого спрайта, то придется подумать как определить новый TransparentColor. Можно конечно заранее его просчитать и использовать, а можно просчитать динамически, взяв, например, цвет фоновой точки (посмотрите координаты какой нибудь из них в редакторе) в полученном спрайте.

Посмотрим на примере.
Эта процедурка реализует алгоритм описанный выше.

procedure Tform1.createmmap(Color:Tcolor;alpha:byte);
var
NG : TDIB;
Item: TPictureCollectionItem;
tm:Tdirectdrawsurface;
i:integer;
est:boolean; //Присутствует ли уже измененная картика в списке
TC:TColor; //TransparentColor
begin
ng:=tdib.Create; //Создаем картинку (пустую)
tm:=Tdirectdrawsurface.Create(DXDraw.Surface.DDraw); //Создаем поверхность
tm.SystemMemory:=false;
tm.SetSize(il.Items[0].Width,il.Items[0].height); //Устанавливаем размер поверхности по размеру исходной картинки
tm.Fill(color); //Заполняем фон нужным цветом
il.Items[0].DrawAlpha(tm,bounds(0,0,il.Items[0].width,il.Items[0].height),0,alpha); //Рисуем исходную картинку на фон с прозрачностью
tm.AssignTo(ng); //Сохраняем изображение в картинку (создана первой строкой)
tm.Free; //Очищаем память от поверхности
TC:=ng.Canvas.Pixels[0,0]; //Возьмем цвет точки 0,0 в качестве TransparentColor для нового спрайта
est:=false; //Ставим на нет, то что картинка уже есть в списке
for i:=0 to il.Items.Count-1 do //Если же она есть
if il.Items[i].Name=’MMG’ then est:=true; //ТО Ставим на Да
if est then //Если ДА то
begin //Изменяем уже существующую картинку
item:=il.Items.Find(’MMG’);
item.Picture.Graphic := ng;
item.TransparentColor:=TC;
item.Transparent:=true;
item.Restore;
end
else
begin //Если же Нет, то заносим в список новую!
Item := TPictureCollectionItem.Create(IL.Items);
Item.Name:=’MMG’;
Item.SystemMemory:=false;
Item.Picture.Graphic := ng;
Item.TransparentColor:=TC;
Item.Transparent:=true;
Item.Restore;
end;
end;

Powered WP Ъ скачать delphi, delphi 7, скачать delphi 7, delphi файлы, delphi, компоненты, delphi 2009, delphi программы, delphi бесплатно, delphi скачать, бесплатно работа delphi, delphi создание, delphi строки, программирования delphi, borland delphi, delphi формы Пиццерия в Москве, доставка пиццы САО.