PDA

View Full Version : دیر Load شدن فرم



sma_mohseni
چهارشنبه 13 شهریور 1387, 00:39 صبح
سلام
وقتی توی فرمهای پروژه از تصاویر استفاده میکنیم (مثلا یک تصویر در بک گراند فرم و تعدادی تصویر دیگر هم روی فرم) هنگامی که برای اولین بار وارد این فرم میشویم مدتی طول میکشد تا این تصاویر لود شوند برای حل این مشکل چه باید کرد.
ممنون

Nima NT
چهارشنبه 13 شهریور 1387, 00:53 صبح
سعی کن به جای تصویر از panel هایی مثل TMS استفاده کن ، هم قشنگه ، هم اینکه سنگین نمیکنه ، تا جائی هم که میتونی از تصاویر png به جای jpg یا bmp استفاده کن.

Hsimple11
چهارشنبه 13 شهریور 1387, 01:13 صبح
ار ریسورس استفاده کنید. تصاویر خود را از ریسورس بخوانید.

sma_mohseni
چهارشنبه 13 شهریور 1387, 12:15 عصر
ار ریسورس استفاده کنید. تصاویر خود را از ریسورس بخوانید.

واقعا تاثیر داره؟
آخه چه تفاوتی داره؟ بالاخره یک تصویر باید لود بشه.

Hsimple11
چهارشنبه 13 شهریور 1387, 18:07 عصر
تصویر خود را از یک ResourceStream بخوانید. همین کلمه را جستجو کنید. احتمالا در مورد آن در سایت کد وجود دارد.

بله تفاوت دارد. در مورد ریسورسها (http://delphi.about.com/od/objectpascalide/l/aa113099a.htm)جستجو کنید.

vcldeveloper
چهارشنبه 13 شهریور 1387, 21:36 عصر
ار ریسورس استفاده کنید. تصاویر خود را از ریسورس بخوانید.
استفاده از ریسورس زمانی تاثیر مثبتی داره که کاربر قبلا تصاویر را از روی فایل باز می کرده، الان میاد از ریسورس استفاده کنه که تصاویر سریعتر باز بشند، ولی وقتی کاربری تصویری را مستقیما در برنامه استفاده کرده، مثلا تصویر را در IDE دلفی توی یک Image لود کرده، در اون صورت تصویر مربوطه در فایل DFM فرم ذخیره میشه و بصورت ریسورس در فایل اجرایی تولید شده قرار می گیره، در این شرایط، ذخیره اون تصویر در یک ریسورس و لود کردنش از ریسورس فرقی با لود کردنش از DFM نداره.

Hsimple11
پنج شنبه 14 شهریور 1387, 00:32 صبح
بله ممنونم.

ولی در مورد تصاویری به غیر از BMP، وقتی در خود DFM فرممون هم ذخیره میشه زمان بسیار کمی برای لود اون طول میکشه. اما من در برنامه خودم اینکار رو با یک ResourceStream انجام دادم. البته به دو دلیل . یکی کم شدن حجم فایل EXE و دیگری قرار ندادن تصویر هنگام توزیع برنامه در کنار برنامه.

vcldeveloper
پنج شنبه 14 شهریور 1387, 03:10 صبح
اما من در برنامه خودم اینکار رو با یک ResourceStream انجام دادم. البته به دو دلیل . یکی کم شدن حجم فایل EXE و دیگری قرار ندادن تصویر هنگام توزیع برنامه در کنار برنامه.
استفاده از ریسورس که حجم فایل EXE رو کم نمیکنه. در واقع ریسورس شما با فایل EXE کامپایل میشه و بهش پیوست میشه. فایل های DFM هم به همین صورت هستند، یعنی بصورت ریسورس کامپایل میشند و به فایل EXE متصل میشند.


ولی در مورد تصاویری به غیر از BMP، وقتی در خود DFM فرممون هم ذخیره میشه زمان بسیار کمی برای لود اون طول میکشه.
علتش اینه که اونا نیاز به پردازش اضافی دارند، ولی BMP نداره.

Hsimple11
پنج شنبه 14 شهریور 1387, 12:32 عصر
استفاده از ریسورس که حجم فایل EXE رو کم نمیکنه. در واقع ریسورس شما با فایل EXE کامپایل میشه و بهش پیوست میشه. فایل های DFM هم به همین صورت هستند، یعنی بصورت ریسورس کامپایل میشند و به فایل EXE متصل میشند.

بله.

ولی اگه مثلا یک تصویر را در کنترل Image در خود IDE دلفی قرار بدیم و EXE را Compile کنیم نسبت به موقعی که همان تصویر را از ریسورس پیوست شده بخوانیم، حجم مقداری بیشتر می شود. امتحان کنید.

vcldeveloper
پنج شنبه 14 شهریور 1387, 13:02 عصر
ولی اگه مثلا یک تصویر را در کنترل Image در خود IDE دلفی قرار بدیم و EXE را Compile کنیم نسبت به موقعی که همان تصویر را از ریسورس پیوست شده بخوانیم، حجم مقداری بیشتر می شود.
احتمالا علتش اینه که DFM تصویر را از خصوصیت Bitmap کنترل Image میخونه و حتی تصاویر JPG و سایر فرمت ها را هم بصورت Bitmap توی خودش ذخیره میکنه.