PDA

View Full Version : زوم بر روی عکس



1072300
شنبه 19 تیر 1389, 18:11 عصر
با سلام به همه دوستان و اساتید محترم
آیا می توان با کد نویسی عمل زوم این و زوم اوت را بر روی عکسی انجام داد البته در دلفی ؟
متشکرم.:عصبانی++::افسرده:

مصطفی ساتکی
شنبه 19 تیر 1389, 21:36 عصر
خود دلفي همچنين كامپوننتي نداره. اصول كار بدين صورت كه بايستي يك مقدار Zoom داشته باشد در حالت عادي zoom برابر 100 در نظر بگيريد .با تغيير اين zoom ابعاد view شما كم و زياد ميشه.پس اينجا 2 تا ابعاد داريد يكي مربوط به zoom و ديگري مربوط به اندازه واقعي يا ابعاد مربوط DIB Bitmap كه اندازه واقعي bitmap است.
وقتي كه zoom‌تغيير مي كنه شما يه zoomcof رو تعيين مي كنيد zoomcof= zoom/100 با ضرب zoomcof در ابعاد واقعي ابعاد View بدست مياد . اگر اينكار تو يه كامپوننت بخايد انجام بديد كلاس خودتونو از TCustomControl به ارث ببريد .كه بتونيد زمانيكه Scrollbar نياز بود اونو visible كنيد . اگر ابعاد View در هر دو جهت افق و عمود بيشتر از ابعاد كنترل فوق باشد scroll ان جه ظاهر و در غير اينصورت ناپديد مي شود .
شما در واقع يه مختصات مربوط به Bitmap داريد و يه مختصات مربوط به view.
وقتي position‌مربوط به scroll ها تغيير مي كنه اين موقعيت در مختصات View مي باشد شما بايستي اين مختصات جديد رو به مختصات واقعي تبديل كرده و آن ناحيه مورد نظر رو با StretchBlt به DC مقصد كه همان dc كنترل فوق كپي كنيد. delphi7 تو پوشه Sample\Scrollbar يه مثال مشابه داره كه اون مي تونه تو تغيير scroll به شما كم كنه.

SAASTN
شنبه 19 تیر 1389, 23:53 عصر
آیا می توان با کد نویسی عمل زوم این و زوم اوت را بر روی عکسی انجام داد البته در دلفی ؟
با Canvas.CopyRect می تونید پیاده سازیش کنید، وقتی که ابعاد مستطیل مبدا و مقصد یکی نباشه CopyRect خودش عکس رو Resize می کنه، ولی این روش از Antialias پشتیبانی نمی کنه و وقتی عکس ها رو بزرگ یا کوچیک می کنید لبه های تصاویر کیفیتشون رو از دست میدن.
یه راه خیلی ساده هم اینه که یه Image بندازی توی یه ScrollBox و خاصیت Stretch عکس رو True کنی و با ابعاد (Width/Height) خود Image بازی کنی. که بازم مشکل لبه های نا هموار رو داره.
برای هموارسازی تصویر هم یه الگوریتم Antialias اینجا (http://www.swissdelphicenter.ch/torry/showcode.php?id=1484) هست که شاید بدردت بخوره.

مصطفی ساتکی
یک شنبه 20 تیر 1389, 14:52 عصر
یه راه خیلی ساده هم اینه که یه Image بندازی توی یه ScrollBox و خاصیت Stretch عکس رو True کنی و با ابعاد (Width/Height) خود Image بازی کنی. که بازم مشکل لبه های نا هموار رو داره.
با حركت Scroll تصوير پرش مي كنه و View خوبي نداره.

1072300
سه شنبه 22 تیر 1389, 21:32 عصر
متشکرم از پاسخ هایتان
اما اگر امکان دارد و دسترسی به سورس خوبی دارید بیشتر یاری ام کنید
متشکرم.

مصطفی ساتکی
چهارشنبه 23 تیر 1389, 17:43 عصر
اگر ميخايد الگو بگيريد imageen رو با سورس تهيه كنيد . كلاس TImageenView مربوط به همين كار ميشه .البته اين ImageEn يا ايتاليايي بد دست خطن 3 ،4 نفر دست خط يكي از اون يكي بدتر.
البته در مورد scroll افقي و عموديش اونا win32 كار كردن كه شما براي سادگي كار مي تونيد از TScrollbar بجاي اون استفاده كنيد.بقيه موارد هم هموني بود كه در بالا توضيح دادم.