ايران ويج

نسخه‌ی کامل: گرافیک در پاسکال یا سی
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
گرفتن ادرس عکس ونمایش ان به زبان سی یا پاسکال
توروخدا جواب بدید
ممنون
سلام بعد از مدتها دو باره اومدم!
خب شما باید اول مسیر فایل رو از کاربر بگیرید بعد از طریق تابع setpixel();
(با استفاده از اون فایل) صفحه رو رنگ آمیزی کنید
البته روشهای دیگه ای هم هست که من ساده ترینشو بهتون گفتم
نکته دیگه اینکه:اگه حجم تصویر از صفحه بیشتر باشه باید از رنگها "میانگین"
بگیرید که اگه یه خورده روش فکر کنید می فهمید من چی میگم
کار آسونیه فقط وقت میبره
دوست من سلام

سوالت رو خیلی کلی مطرح کردی ! در هر حال ، دو حالت بیشتر نداره . اگر تحت ویندوز بخوای برنامه بنویسی که خب قضیه فرق می کنه ولی شما ظاهرا هدفت تحت DOS هست . خب باید بگم که DOS بطور کلی و مستقیم از فایل های گرافیکی ساپورت نمی کنه چون اکثر اونها در زمان وجود DOS هنوز ساخته نشده بودند و بسیاری اوقات امکانات سخت افزاری اجازه نمی داد .
الان با وجود فرمت های گرافیکی مختلف ، برنامه نویس خودش باید دست بکار بشه و برنامه ای بنویسه که عکس ها رو تحت DOS نمایش بده . معمولا کار ساده ای نیست چون شما باید کاملا با Format فایل عکسی که باهاش کار می کنی آشنا باشی . مثلا اگه میخوای یک عکس Bitmap رو نمایش بدی باید فرمت و خصوصیات فایلهای Bitmap رو بدونی تا بتونی پیکسل ها رو استخراج کنی و بقول دوستمون یکی یکی نمایش بدی !
ساده ترین نوع فایل گرافیکی که معمولا اطلاعات تک تک پیکسل ها رو ذخیره می کنه و از فشرده سازی استفاده نمی کنه همون Bitmap هست . شما باید پیکسل ها رو بخونی و توی یک آرایه قرار بدی . بعد هر پیکسل رو تک به تک نمایش بدی تا عکس کامل بشه . یک برنامه C نمونه پیدا کردم که این کار رو واسه عکس های 16 بیتی Bitmap انجام میده :

http://writeka.com/emage/bmp16_format.html

عکس های دیگه هم همین طور ! باید طبق فرمتشون داده های هر پیکسل رو بخونی و نمایش بدی اگر چه توی خیلی اوقات نیاز هست که برای استخراج اطلاعات پیکسل ها از الگوریتم های خاصی استفاده کنی که معمولا اطلاعات رو از حالت فشرده خارج می کنند یا ....

مطلب بعدی که ممکن هست به نظر برسه مساله سرعت نمایش هست . معمولا توابعی مثل SetPixel کند هستند چرا که نوشتن تک تک پیکسل ها در حافظه و نمایش اونها یک مدت زمان می بره و این به شدت روی سرعت عمل برنامه تاثیر میگذاره . معمولا اکثر برنامه های گرافیکی ، با کمک زبان سطح پایینی مثل اسمبلی ، بطور مستقیم و سریع ، کل اطلاعات پیکسل ها رو در حافظه گرافیکی مینویسند و بعد نمایش می دن . این کار یک حالت Buffering ایجاد می کنه و سرعت نمایش رو خیلی بالا میبره اما در عوضش دردسر های سروکله زدن با کد های سطح پایین رو داره .

امیدوارم مفید بوده باشه !

برنامه کاملش به زبان C در سایت زیر و در بخش C /C++ هست:
www.programmersheaven.com
البته فورمت مخصوص خودش رو داره(فکر کنم svr یا یه چیزی تو همین مایه ها)
شرمنده آدرسش یادم نیست اگه تو سایت بگردید پیدا میکنیدShyShy
خیلی خیلی ممنون از راهنماییتون تستش کردم ولی جواب نداد
با سلام
ممنون ازراهنماییتون واقعا برنامه ی جالبی بود
یاشاسین



با سلام
ممنون ازراهنماییتون واقعا برنامه ی جالبی بود
یاشاسین
سلام
اینبار درست جواب داد
باتشکراز مدیر بخش سی
Question