Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
3
Добавлен:
15.04.2015
Размер:
4.47 Кб
Скачать
unit Unit3;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, jpeg, Unit1, Unit2;

type
TForm3 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
Bevel1: TBevel;
Image1: TImage;
CheckRatio: TCheckBox;
CheckScale: TCheckBox;
procedure FormShow(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Edit2Change(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form3: TForm3;
ratio: real;//Коэффициент соотношения сторон
w,h: integer;//Переменные хранения ширины и высоты
c: integer;//Переменная для проверки
wr: array [1..10] of integer;
hr: array [1..10] of integer;
u: array [1..10] of integer;

implementation


{$R *.dfm}

//----------------------------------------------------------------------------//
//При показе формы
procedure TForm3.FormShow(Sender: TObject);
begin
//Считываем значения высоты и ширины картинки
w:=Form_pic[act_form].Image1.Width;
h:=Form_pic[act_form].Image1.Height;
//Присваиваем полям ввода значения высоты и ширины
Edit1.Text:=IntToStr(w);
Edit2.Text:=IntToStr(h);
//Задание коэффициента соотношения сторон
ratio:=w/h;
end;
//----------------------------------------------------------------------------//
//Изменение значения ширины
procedure TForm3.Edit1Change(Sender: TObject);
var
//Локальная переменная для предотвращения ошибки
ww: integer;
begin
//проверка отсутствия знаков в Edit1
//Если знаки отсутствуют, присваиваем 1
if Edit1.Text = '' then ww:=1 else ww:=StrToInt(Edit1.Text);
// Если выбрано Сохранять пропорции
if CheckRatio.Checked then h:=round(ww/ratio);
w:=ww;
//Запись в поля ввода ширины и высоты
Edit1.Text:=IntToStr(w);
//Проверка для записи в Edit2
if c<>1 then
Edit2.Text:=IntToStr(h);
c:=2;
end;
//----------------------------------------------------------------------------//
//нажатие на кнопки отмена
procedure TForm3.BitBtn2Click(Sender: TObject);
begin
Form3.Close;
end;
//----------------------------------------------------------------------------//
//Процудура выполняемая при нажатии на Ok или Enter
procedure TForm3.BitBtn1Click(Sender: TObject);
var
BMP: TBitmap;//Переменная для хранения картинки
begin
Undo:=true;
UndoBuf[act_form].Width:=Form_pic[act_form].Image1.Picture.Bitmap.Width;
UndoBuf[act_form].Height:=Form_pic[act_form].Image1.Picture.Bitmap.Height;
UndoBuf[act_form].Canvas.CopyRect(Rect(0,0,UndoBuf[act_form].Width, UndoBuf[act_form].Height),Form_pic[act_form].Image1.Canvas,Rect(0,0,UndoBuf[act_form].Width,UndoBuf[act_form].Height));
u[act_form]:=act_form;
wr[act_form]:=Form_pic[act_form].Image1.Picture.Bitmap.Width;
hr[act_form]:=Form_pic[act_form].Image1.Picture.Bitmap.Height;
//Создание переменной
BMP:=TBitmap.Create;
//Считывание высоты и ширины
w:=StrToInt(Edit1.Text);
h:=StrToInt(Edit2.Text);
//Присвоение переменной ширины и высоты
BMP.Width:=w;
BMP.Height:=h;
//Задание цвета карандаша и кисти
BMP.Canvas.Pen.Color:=clWhite;
BMP.Canvas.Brush.Color:=clWhite;
//Создание прямоуг. области
BMP.Canvas.Rectangle(0,0,w,h);
//Проверка нажатия Масштабировать
if CheckScale.Checked then
//Измененияе размера картинки
BMP.Canvas.StretchDraw(rect(0,0,w,h),Form_pic[act_form].Image1.Picture.Bitmap)
else
//Вставка картинки
BMP.Canvas.Draw(0,0,Form_pic[act_form].Image1.Picture.Bitmap);
//Подстройка размеров формы
Form_pic[act_form].ClientHeight:=BMP.Height+Pic.StatusBar1.Height+3;
Form_pic[act_form].ClientWidth:=BMP.Width+4;
Form_pic[act_form].Image1.Picture.Bitmap:=BMP;
//Уничтожение переменной
BMP.Destroy;
//Закрытие формы
Form3.close;
end;
//----------------------------------------------------------------------------//
//Прцедура изменения Edit2
procedure TForm3.Edit2Change(Sender: TObject);
var
hh:integer;
begin
//проверка отсутствия знаков в Edit2
//Если знаки отсутствуют, присваиваем 1
if Edit2.Text = '' then hh:=1 else hh:=StrToInt(Edit2.Text);
//Если нажато пропорции
if CheckRatio.Checked then w:=round(hh/ratio);
h:=hh;
//Запись в Edit2
Edit2.Text:=IntToStr(h);
//Проверка для записи в Edit1
If c<>2 then
Edit1.Text:=IntToStr(w);
c:=1;
end;
end.
Соседние файлы в папке Галкин_Прошкин
  • #
    15.04.20152.96 Кб3Unit2.~dfm
  • #
    15.04.201523.29 Кб3Unit2.~pas
  • #
    15.04.20157.3 Кб3Unit3.dcu
  • #
    15.04.201551 б3Unit3.ddp
  • #
    15.04.201512.19 Кб4Unit3.dfm
  • #
    15.04.20154.47 Кб3Unit3.pas
  • #
    15.04.201551 б3Unit3.~ddp
  • #
    15.04.201512.19 Кб3Unit3.~dfm
  • #
    15.04.20154.47 Кб3Unit3.~pas
  • #
    15.04.20156.5 Кб3Unit4.dcu
  • #
    15.04.201551 б3Unit4.ddp