Архив исходников программ, модулей и компонентов на Delphi


Начальная страница

Поиск по базе



Операционная система
Настройка приложения
Взаимодействия приложений
Файлы и директории
Строки и символы
Математика
Базы данных
Интернет и сеть
Мультимедиа
Аппаратная часть
VCL
Другие разделы [0]
 

Количество записей в базе - 537
Сегодня добавлено – 0

Изображения, рисование



Вернуться к списку функций
 Функции для работы с объектом типа TImage

 Прислал: VID (Махачкала) ( 05 мая 2002 г. )
©  VID
 Описание:
Модуль ImgTools предоставляет функции для работы с изображениями, в частности для работы с визуальным объектом типа TImage.

Function FitBestSize - Подбор оптимального размера рисунка, в соответствии с областью на которой он расположен
Function CenterImage - Центрирование рисунка в области, на которой он расположен
Function SetImageSize - Процентное изменение размера рисунка

Каждая функция возвращает результат типа TImageSizeParams;
type TImageSizeParams = record
OldImageWidth - ширина рисунка до преобразований
OldImageHeight - высота рисунка до преобразований
OldImageLeft - позиция X рисунка до преобразований
OldImageTop - позиция Y рисунка до преобразований
NewImageWidth - ширина рисунка после преобразований
NewImageHeight - высота рисунка после преобразований
NewImageLeft - позиция X рисунка после преобразований
NewImageTop - позиция Y рисунка после преобразований
NewImageSizePercent - размер рисунка в процентах после преобразования, от размера рисунка до преобразования
end;

 Зависимости:
ExtCtrls

 Исходный текст:
{ **** UBPFD *********** by http://kladovka.net.ru/delphibase/ ****
>> Функции для работы с объектом типа TImage

Модуль ImgTools предоставляет функции для работы с изображениями, в частности для работы с визуальным объектом типа TImage.

Function FitBestSize - Подбор оптимального размера рисунка, в соответствии с областью на которой он расположен
Function CenterImage - Центрирование рисунка в области, на которой он расположен
Function SetImageSize - Процентное изменение размера рисунка

Каждая функция возвращает результат типа TImageSizeParams;
type TImageSizeParams = record
OldImageWidth - ширина рисунка до преобразований
OldImageHeight - высота рисунка до преобразований
OldImageLeft - позиция X рисунка до преобразований
OldImageTop - позиция Y рисунка до преобразований
NewImageWidth - ширина рисунка после преобразований
NewImageHeight - высота рисунка после преобразований
NewImageLeft - позиция X рисунка после преобразований
NewImageTop - позиция Y рисунка после преобразований
NewImageSizePercent - размер рисунка в процентах после преобразования, от размера рисунка до преобразования
end;

Зависимости: ExtCtrls
Автор:       VID, vidsnap@mail.ru, ICQ:132234868, Махачкала
Copyright:   VID
Дата:        05 мая 2002 г.
***************************************************************** }

unit ImgTools;

interface

uses ExtCtrls;

type TImageSizeParams = record
  OldImgWidth, OldImgHeight, OldImageLeft, OldImageTop,
  NewImgWidth, NewImgHeight, NewImageLeft, NewImageTop,
  NewImgSizePercent:Integer;
end;

type TTimeState = (tsBefore, tsAfter);

Function FitBestSize (Img:TImage):TImageSizeParams;
Function CenterImage (Img:TImage):TImageSizeParams;
Function SetImageSize(Img:TImage; SizePercent:Integer):TImageSizeParams;

Var ImageSizeParams:TImageSizeParams;

implementation

//Обнуление полей переменной типа TImageSizeParams
Function ClearImageSizeParams:TImageSizeParams;
begin
Result.OldImgWidth := 0;
Result.OldImgHeight := 0;
Result.OldImageLeft := 0;
Result.OldImageTop := 0;
Result.NewImgWidth := 0;
Result.NewImgHeight := 0;
Result.NewImageLeft := 0;
Result.NewImageTop := 0;
Result.NewImgSizePercent := 0;
end;

//Получение параметров рисунка до и после преобразований
Function GetImageSizeParams(Img:TImage; TimeState:TTimeState):TImageSizeParams;
begin
If img = nil then
begin
  result := ClearImageSizeParams;
  ImageSizeParams := Result;
  exit;
end;
If TimeState = tsBefore then
begin
  ImageSizeParams := ClearImageSizeParams;
  result.OldImgWidth := img.Width ;
  Result.OldImgHeight := img.Height ;
  result.OldImageLeft := img.Left ;
  result.OldImageTop := img.Top ;
end;
If TimeState = tsAfter then
begin
  Result := ImageSizeParams;
  Result.NewImgWidth := img.Width ;
  Result.NewImgHeight := img.Height ;
  result.NewImageLeft := img.Left ;
  result.NewImageTop := img.Top;
  Result.NewImgSizePercent := Round(Result.NewImgWidth / Result.OldImgWidth * 100);
end;
ImageSizeParams:=Result;
end;

//Подбор оптимального размера рисунка, в соответствии с областью на которой он расположен
Function FitBestSize(Img:Timage):TImageSizeParams;
var
  h,w,i,x,y:Integer;
  K,b,a:Double;
begin
if Img = nil then exit;
try
Result := ClearImageSizeParams;
Img.AutoSize := True;
Img.AutoSize := False;
GetImageSizeParams(Img, tsBefore);
h:=img.picture.Height ;
w:= img.picture.Width ;
i:=0;
repeat
x:=img.Parent.clientwidth-w;
y:=img.Parent.clientheight-h;
i:=i+1;
k:=w/h ;
  if y<x then
  begin
    b:=y;
    h:=h+Round(b);
    a:=H*k - W;
    w :=w +Round(a);
  end;
  if y>=x then
  begin
    a:=x;
    w:=w+Round(a);
    b:=(w/k)-H;
    h:=h+Round(b);
  end;
until (w<img.Parent.width) or (h<img.Parent.height) or (i>=2);
img.Stretch := true;
img.Width := w; img.height:=h;
Result := GetImageSizeParams (Img, tsAfter);
except end;
end;

//Центрирование рисунка в области, на которой он расположен
Function CenterImage(Img:TImage):TImageSizeParams;
begin
Result := ClearImageSizeParams;
if Img = nil then exit;
GetImageSizeParams(img, tsBefore);
img.left:=(Img.parent.Width div 2) - (img.Width div 2);
img.Top :=(Img.parent.Height div 2)- (img.height div 2);
Result := GetImageSizeParams(img, tsAfter);
end;

//Процентное изменение размера рисунка
Function SetImageSize(Img:TImage; SizePercent:Integer):TImageSizeParams;
Var K:Double;
    nw, nh:Integer;
begin
Result := ClearImageSizeParams;
if Img = nil then exit;
If SizePercent<0 then exit;
Img.AutoSize := True;
Img.AutoSize := False;
GetImageSizeParams(img, tsBefore);
try
  K := img.height/img.width;
except exit;end;
nw := Round(img.Width*SizePercent/100);
nh := round(nw*k);
img.Stretch := true;
img.Width:=nw; img.Height := nh;
Result := GetImageSizeParams(img, tsAfter);
end;

end.


Вернуться к списку функций

Наверх ▲