ورود

View Full Version : بدست آوردن سایز جدید یک تصویر Deform شده ؟؟



BOB
شنبه 12 دی 1383, 03:13 صبح
سلام.
در کنترلهای image وقتی خاصیتهای Stretch , Proportional را فعال کنیم.. با تغییر سایز image ، سایز تصویر هم تغییر میکند ولی از سایز image کوچکتر میباشد ( چون تصویر ، فرم خود را حفظ کرده و از بعضی جهات هم سایز با image نمیشود).
حالا سایز این تصویر Deform شده رو چطور میشه بدست آورد.؟؟
متشکرم.

BOB
دوشنبه 14 دی 1383, 06:08 صبح
سلام دوستان.
من یه خورده مسله رو ساده تر بیان میکنم. امیدوارم مشکل حل بشه.
به این شکل توجه کنید.
حالا سایز تصویر دفورمه شده رو چطور میشه بدست آورد ؟؟
متشکرم

BOB
سه شنبه 15 دی 1383, 04:59 صبح
سلام دوستان.
خودم تونستم مشکل رو حل کنم. سایز تصویر دفورم شده رو میشه از روی نسبت بین طول و عرض تصویر اصلی به ضلع معلوم در تصویر دفورمه پیدا کرد. (جدول تناسب)



//PicW,PicH = Original image sizes
//TimgW,TimgH = Timage sizes
//Result = Deformed sizes
function DeformSize(TimgW,TimgH,PicW,PicH:integer): TPoint;
var xyaspect: Double;
begin
if (PicW > TimgW) or (PicH > TimgH) then
begin
if (PicW > 0) and (PicH > 0) THen
begin
xyaspect := PicW / PicH;
if PicW > PicH then
begin
PicW := TimgW;
PicH := Trunc(TimgW / xyaspect);
if PicH > TimgH then // PicWoops, too big
begin
PicH := TimgH;
PicW := Trunc(TimgH * xyaspect);
end;
end
else
begin
PicH := TimgH;
PicW := Trunc(TimgH * xyaspect);
if PicW > TimgW then // PicWoops, too big
begin
PicW := TimgW;
PicH := Trunc(TimgW / xyaspect);
end;
end;
end
else
begin
PicW := TimgW;
PicH := TimgH;
end;
end;
Result.x:=0;
Result.y:=0;
Result:=Point(PicW,PicH);
end;