![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как вырезать фрагмент изображения при изменённом масштабе? [D7, WinXP]
Zhentos © (2008-07-09 12:27:00)Здравствуйте.
Очевидно, что нужно использовать коэффициент изменения масштаба. Делаю так:
var
MyRect, MyOther: TRect;
kf: real;
begin
kf := InitHW / Image1.Width; //вычисляю коэффициент
MyRect := Rect(Round(Shape1.Left * kf), Round(Shape1.Top * kf), Round((Shape1.Left + Shape1.Width) * kf), Round((Shape1.Top + Shape1.Height) * kf)); //копируемая область с учётом положения шейпа.
MyOther := Rect(0, 0, Round(Shape1.Width * kf), Round(Shape1.Height * kf)); //новая область
Image1.Canvas.CopyRect(MyOther, Image1.Picture.Bitmap.Canvas, MyRect); //вырезаю и вставляю
Shape1.Left := 0;
Shape1.Top := 0;
Image1.Proportional := false;
Image1.Stretch := false;
Image1.Picture.Bitmap.Width := Shape1.Width;
Image1.Picture.Bitmap.Height := Shape1.Height;
Image1.Width := Shape1.Width;
Image1.Height := Shape1.Height;
Image1.Proportional := true;
Image1.Stretch := true;
Image1.Picture.SaveToFile(ExtractFilePath(paramstr(0)) + 'Picture.bmp');
end;
странно, что при трасировке копируемый фрагмент соответствует нужному мне фрагменту, а на выходе четвертинка необходимого мне фрагмента.
Leonid Troyanovsky (2008-07-09 13:11:00) [1]
> brother © (09.07.08 13:00) [2]
> пока набирал - озарило? ))))
Штирлиц подумал. Ему понравилось.
Штирлиц подумал еще раз.
--
Regards, LVT.
brother (2008-07-09 13:00:00) [2]пока набирал - озарило? )))) вот так всегода)))
Zhentos (2008-07-09 12:40:00) [3]мда, поспешил я с вопросом...
в общем есть контакт.