PDA

View Full Version : سوال: اضافه کردن عکس به ImageList



Mask
جمعه 18 فروردین 1391, 15:57 عصر
با سلام.
در قسمتی از برنامم مجبورم عکسی که در ImageList هست رو با ایندکس مربوطه به شی ای اختصاص بدم.
عکس هم با فرمت PNG هست.
مشکلم اینه که در حین دیزاین به راحتی عکسم رو در ImageList ادد میکنم. اما نمیدونم چطوری میشه حالت رانتایم و در حالت اجرای برنامه این عکس رو از بیرون به ImageList ادد و سپس به کنترل مورد نظر وصل کنم.
ممنون از راهنماییتون.

SAASTN
جمعه 18 فروردین 1391, 22:22 عصر
uses
pngimage;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
PNG: TPngImage;
BMP: TBitmap;
begin
if OpenPictureDialog1.Execute then
begin
BMP := TBitmap.Create;
if LowerCase(ExtractFileExt(OpenPictureDialog1.FileNa me)) = '.png' then
begin
PNG := TPngImage.Create;
PNG.LoadFromFile(OpenPictureDialog1.FileName);
BMP.Assign(PNG);
PNG.Free;
end
else
BMP.LoadFromFile(OpenPictureDialog1.FileName);
ImageList1.Add(BMP, nil);
BMP.Free;
end;
end;

joooje
سه شنبه 22 فروردین 1391, 11:42 صبح
سلام
من میخوام این کد رو تغییر بدم برای مثلا یه فایل آیکون
میخوام بتونم تو ران تایم یه عکس به hmagelist اضافه کنم و بعد اونو قرار بدم برای یکی از آیکونهای منو (البته من بدون open dialog میخوام)
هرکاری کردم این کد رو تغییر بدم نشد
میشه راهنمایی کنید؟
ممنون

Mask
سه شنبه 22 فروردین 1391, 11:54 صبح
این کد برای فایلهای png هست.
برای آیکن میتونید مستقیم فابل رو در bitmap لود کنید.
برای اینکه از Opendialog هم استفاده نکنید، باید اسم فایل رو مستقیم به bitmap بفرستید.

SAASTN
سه شنبه 22 فروردین 1391, 15:55 عصر
این کد یه فایل Ico رو باز می کنه و به ImageList اضافه می کنه و اون رو به یه Action اختصاص می ده. اون Action قبلا به MenuItem اختصاص داده شده. بعد از اجرای اون عکس MenuItem تغییر می کنه. اگه کار نکرد بگو دقیقا چه مشکلی داری. حواست باشه اندازه Icon باید برابر ابعاد مشخص شده برای ImageList باشه. ColorDepth و DrawingStyle مربوط به ImageList رو هم با توجه به مشخصات تصویر ست کن.
procedure TForm1.Button1Click(Sender: TObject);
var
ICO: TIcon;
BMP: TBitmap;
I: Integer;
begin
ICO := TIcon.Create;
ICO.LoadFromFile('C:\Icons\Dexplore.ico');
BMP := TBitmap.Create;
BMP.Assign(ICO);
Action1.ImageIndex := ImageList1.Add(BMP, nil);
ICO.Free;
BMP.Free;
end;