PDA

View Full Version : کم کردن زمان لود glyph



Hsimple11
پنج شنبه 05 مهر 1386, 00:56 صبح
با سلام
تعدادی دکمه دارم که میخوام با رویداد onmousemove آنها glyph شان تغییر کند. از دستور loadfromfile در این رویداد استفاده کردم ولی مشکل اینجاست که برای چندین دکمه مقداری طول میکشد و راحت اجرا نمیشود. حجم عکسها رو کم کردم ولی باز هم خیلی روان اجرا نمیشه. نمیشود از فایل های JPEG به نحوی در glyph استفاده کرد؟ ممنون....

vcldeveloper
پنج شنبه 05 مهر 1386, 02:53 صبح
نمیشود از فایل های JPEG به نحوی در glyph استفاده کرد؟

uses JPEG;
...
var
JIMage : TJPEGImage;
begin
JImage := TJPEGImage.Create;
try
JImage.LoadFromFile('G:\Test\j.jpg');
SpeedButton1.Glyph.Assign(JIMage);
finally
JImage.Free;
end;
end;برای افزایش سرعت لود شدن تصاویر می تونید،بجای آنکه هر بار تصویر مربوطه را از روی دیسک لود کند، آنها را بصورت Resource در فایل EXE ذخیره کنید. می تونید تصاویر مربوطه را در ImageList هم وارد کنید و به شکل زیر استفاده کنید:

ImageList1.GetBitmap(0,SpeedButton1.Glyph);کد فوق اولین تصویر ImageList را در Glyph مربوط به دکمه SpeedButton1 لود می کند.

دقت کنید که ImageList برای سایز تصاویر محدودیت هایی دارد. اگر احتیاج به تصاویر بزرگ دارید، از همون Resource بطور مستقیم استفاده کنید. درباره نحوه کار با Resource های ذخیره شده در فایل EXE هم قبلا در این سایت بحث شده، می تونید جستجو کنید.

Hsimple11
پنج شنبه 05 مهر 1386, 23:12 عصر
برای افزایش سرعت لود شدن تصاویر می تونید،بجای آنکه هر بار تصویر مربوطه را از روی دیسک لود کند، آنها را بصورت Resource در فایل EXE ذخیره کنید.

با سلام و تشکر از آقای کشاورز.
راستش من جستجو کردم و طرز کار با Resource ها رو هم تا حدودی یاد گرفتم اما اینکه با EXE اش کار کنم رو پیدا نکردم. میشه یه کم بیشتر توضیح بدین؟ خیلی خیلی ممنون...

manvaputra
جمعه 06 مهر 1386, 01:59 صبح
دوست عزیز سلام ببین اگه این برنامه بدردت می خوره تا مراحل ایجادشو برات همینجا بذارم این کد یه عکس رو از توی ریسورسی که به فایل اجرایی متصل شده لود می کنه

Hsimple11
جمعه 06 مهر 1386, 11:57 صبح
با سلام و تشکر.
دوست خوبم برنامه Error میده که فایل ریسورس رو پیا نمیکنه:
resource file not found
اگه میشه مراحل تولید فایل Exe ای که میخوام عکسام رو توش بذارم رو توضیح بدین.
بازم ممنون

manvaputra
جمعه 06 مهر 1386, 13:46 عصر
دوست عزیز من این مثال رو با فرمت Bmp تست کردم نمی دونم با بقیه فرمت ها هم میشه یا نه به هر حال اساتید دیگه می تونن کلی راهنمایی کنن در این مورد:
خوب فرض می کنیم یه فایل داریم با نام cic.bmp که می خواهیم به فایل اجرایی الحاقش کنیم.
در قدم اول با با یه ادیتور یه فایل متنی ایجاد کن و توش این خط رو بنویس:

mypic Bitmap "cic.bmp"به جای mypic می تونی اسم دلخواه خودت رو هم بذاری.
حالا فایل متنی رو با پسوند RC. ذخیره کن .توی این مثال من فایل رو با نام manvaputra ذخیره کردم یعنی الان میرسیم به فایلی با نام:

manvaputra.RCدقت کن که حتما این فایل به علاوه تصویری که می خواد اضافه بشه توی شاخه ای که پروژه ات رو ذخیری کردی باشه تا هنگام کامپایل توسط کامپایلر پیدا بشن.
در قدم بعدی از Command Prompt به شاخه ای که پروژه رو ذخیره کردی برو و خط دستور زیر رو اجرا کن:

Brcc32 manvaputra.rc
http://xs119.xs.to/xs119/07395/manvaputra.gif


بعد از این مرحله شما فایلی با نام manvaputra.RES خواهید داشت.
حالا توی یونیت پروژه زیر قسمت implementation کد زیر رو وارد کن:

{$R manvaputra.RES}به فرض مثال می تونی با این کد عکس الحاقی به فایل اجرایی رو توی یک image قرار بدی:

image1.Picture.Bitmap.LoadFromResourceName(hInstan ce,'mypic');این مراحل رو من اجرا کردم و جواب گرفتم اگه اساتید راه بهینه تری سراغ دارن خوشحال می شم مثل همیشه راهنمایی نمایند.