PDA

View Full Version : سوال: نحوه نمایش عکس بر روی فرم



joooje
پنج شنبه 23 تیر 1390, 11:08 صبح
با سلام به همه ی دوستان
من دوتا سوال دارم که چون هر دو در یه موضوع هستند هر دو رو توی یه تاپیک میپرسم
جستجو هم کردم ، ولی در مورد دلفی چیزی رو نمیآورد و برای سایر زبانها با موضوع من پیدا می کرد
من میخوام نحوه ی لود کردن عکس به برنامه رو بدونم به دو روش:
1 - اینکه من یه Image توی فرم دارم، حالا بعد از اجرای برنامه عکس خاصی رو از مسیر مثلا: C:\1.jpg توی اون قرار بدم
2- اینکه من یه Image و ImageList توی فرم دارم،حالا بعد از اجرای برنامه عکس خاصی رو از مسیر مثلا: C:\1.jpg توی ImageList اضافه بکنم و بعد از توی ImageList اونو توی Image نشون بدم
ممنون میشم راهنمایی بکنید.

mohsen24000
پنج شنبه 23 تیر 1390, 12:14 عصر
عموما از امیج لیست وقتی استفاده می کنند که یکبار تصویر در برنامه هنگام کامپایل قرار گرفته و در موقع اجرا اون رو در ایمیج لود میکنند و دیگر به لود از روی هارد نیاز ندارد...

joooje
پنج شنبه 23 تیر 1390, 15:04 عصر
عموما از امیج لیست وقتی استفاده می کنند که یکبار تصویر در برنامه هنگام کامپایل قرار گرفته و در موقع اجرا اون رو در ایمیج لود میکنند و دیگر به لود از روی هارد نیاز ندارد...
ممنون ولی من میخوام روش اون دوتا کاری که گفتم رو یاد بگیرم
ممنون میشم راهنمایی کنید و کد بزارید

Felony
پنج شنبه 23 تیر 1390, 20:00 عصر
1 - اینکه من یه Image توی فرم دارم، حالا بعد از اجرای برنامه عکس خاصی رو از مسیر مثلا: C:\1.jpg توی اون قرار بدم
Image1.Picture.LoadFromFile('G:\JPG\Avatar\avatar8 780_2.jpg');


2- اینکه من یه Image و ImageList توی فرم دارم،حالا بعد از اجرای برنامه عکس خاصی رو از مسیر مثلا: C:\1.jpg توی ImageList اضافه بکنم و بعد از توی ImageList اونو توی Image نشون بدم
کنترل ImageList عکس ها رو به صورت Bitmap قبول میکنه پس باید قبل از هر کاری عکس مورد نظر رو به Botmap تبدیل کنید ، بعد از اون هم باید Height و Width شئ ImageList رو با Height و Width عکس مورد نظر مقداردهی کنید در غیر این صورت ImageList عکس رو به اندازه Heigth و Width پیش فرض خودش Crop میکنه ، بعد از این کار میتونی توسط متد Insert عکس مورد نظرت رو وارد ImageList کنی ، یه نمونه برات نوشتم :

var
aBitmap: TBitmap;
aJpeg: TJPEGImage;
begin
aBitmap := TBitmap.Create;
aJpeg := TJPEGImage.Create;
try
aJpeg.LoadFromFile('G:\JPG\Avatar\avatar8780_2.jpg ');
aBitmap.Assign(aJpeg);
ImageList1.Height:= aBitmap.Height;
ImageList1.Width:= aBitmap.Width;
ImageList1.Insert(0, aBitmap, nil);
finally
aBitmap.Free;
aJpeg.Free;
end;

برای استفاده از عکس درج شده در شئ ImageList هم باید از متد GetBitmap استفاده کنی :

var
aBitmap: TBitmap;
begin
aBitmap := TBitmap.Create;
try
ImageList1.GetBitmap(0, aBitmap);
Image1.Picture.Bitmap:= aBitmap;
finally
aBitmap.Free;
end;

موفق باشید .

joooje
جمعه 14 مرداد 1390, 19:09 عصر
سلام ببخشید که این پست رو دوباره بالا آوردم
آخه به مشکل برخوردم
این کدی بود که شما دادید:

Image1.Picture.LoadFromFile('G:\JPG\Avatar\avatar8 780_2.jpg');
چرا با این کد نمیتونم فایل jpg توی ایمیج فراخوانی کنم ولی فایل bmp رو میخونه
من از دلفی 7 استفاده میکنم
ممنون

Felony
جمعه 14 مرداد 1390, 19:21 عصر
کتابخانه Jpeg رو به Uses برنامتون اضافه کنید .

setroyd
جمعه 14 مرداد 1390, 22:51 عصر
png هم ساپورت میکنه این کتاب خانه ؟

Felony
جمعه 14 مرداد 1390, 22:57 عصر
:لبخندساده: اسمش Jpeg هست اون وقت چه دلیلی داره که PNG پشتیبانی کنه ؟!

در نسخه های 2009 به بعد دلفی میتونید برای نمایش تصاویر PNG در شئ Image از کتابخانه PNGImage استفاده کنید ، در دلفی 7 هم باید از کامپوننت های نمایش عکس مثل ImageEN استفاده کنید .