با سلام به همه دوستان و اساتید محترم
آیا می توان با کد نویسی عمل زوم این و زوم اوت را بر روی عکسی انجام داد البته در دلفی ؟
متشکرم.
با سلام به همه دوستان و اساتید محترم
آیا می توان با کد نویسی عمل زوم این و زوم اوت را بر روی عکسی انجام داد البته در دلفی ؟
متشکرم.
خود دلفي همچنين كامپوننتي نداره. اصول كار بدين صورت كه بايستي يك مقدار 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 به شما كم كنه.
با Canvas.CopyRect می تونید پیاده سازیش کنید، وقتی که ابعاد مستطیل مبدا و مقصد یکی نباشه CopyRect خودش عکس رو Resize می کنه، ولی این روش از Antialias پشتیبانی نمی کنه و وقتی عکس ها رو بزرگ یا کوچیک می کنید لبه های تصاویر کیفیتشون رو از دست میدن.آیا می توان با کد نویسی عمل زوم این و زوم اوت را بر روی عکسی انجام داد البته در دلفی ؟
یه راه خیلی ساده هم اینه که یه Image بندازی توی یه ScrollBox و خاصیت Stretch عکس رو True کنی و با ابعاد (Width/Height) خود Image بازی کنی. که بازم مشکل لبه های نا هموار رو داره.
برای هموارسازی تصویر هم یه الگوریتم Antialias اینجا هست که شاید بدردت بخوره.
با حركت Scroll تصوير پرش مي كنه و View خوبي نداره.یه راه خیلی ساده هم اینه که یه Image بندازی توی یه ScrollBox و خاصیت Stretch عکس رو True کنی و با ابعاد (Width/Height) خود Image بازی کنی. که بازم مشکل لبه های نا هموار رو داره.
متشکرم از پاسخ هایتان
اما اگر امکان دارد و دسترسی به سورس خوبی دارید بیشتر یاری ام کنید
متشکرم.
اگر ميخايد الگو بگيريد imageen رو با سورس تهيه كنيد . كلاس TImageenView مربوط به همين كار ميشه .البته اين ImageEn يا ايتاليايي بد دست خطن 3 ،4 نفر دست خط يكي از اون يكي بدتر.
البته در مورد scroll افقي و عموديش اونا win32 كار كردن كه شما براي سادگي كار مي تونيد از TScrollbar بجاي اون استفاده كنيد.بقيه موارد هم هموني بود كه در بالا توضيح دادم.