نمایش نتایج 1 تا 18 از 18

نام تاپیک: سوال: نحوه قرار دادن تصاویر داخل Image list در یک کنترل Image

  1. #1

    سوال: نحوه قرار دادن تصاویر داخل Image list در یک کنترل Image

    سلام به همگی دوستان.
    چطوری میشه تصاویر یک ImageList رو داخل یک کنترل Image قرار داد؟

  2. #2
    ABMP := TBitmap.Create;
    ImageList1.GetBitmap(ABMP, 0);
    Image1.Picture.Graphic.Assign(ABMP);
    ABMP.Free;

  3. #3
    متغیر ABMP رو از چه نوعی تعریف کنم؟
    من از نوع Tbitmap تعریف کردم ، ولی در خط دوم خطای تبدیل نوع میده
    نمیتونه Integer رو به Tbitmap تبدیل کنه
    ؟؟؟؟؟؟؟؟؟؟؟؟؟

  4. #4
    من از نوع Tbitmap تعریف کردم ، ولی در خط دوم خطای تبدیل نوع میده
    ترتیب پارامترها اشتباه نوشته شده بود:

    ImageList1.GetBitmap(0,ABMP);


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  5. #5
    procedure TForm1.Button1Click(Sender: TObject);
    var ABMP:TBitmap;
    begin
    ABMP := TBitmap.Create;
    ImageList1.GetBitmap(0,ABMP);
    Image1.Picture.Graphic.Assign(ABMP);
    ABMP.Free;
    end;//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    این کد رو نشوشتم ولی خطای زیر رو میده.
    [Validation at Address 00450846 in module project.exe

    آخرین ویرایش به وسیله hadisalahi2 : چهارشنبه 11 اردیبهشت 1387 در 13:36 عصر

  6. #6
    حق با شماست
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Image1.Picture.Bitmap := TBitmap.Create;
    ImageList1.GetBitmap(0,Image1.Picture.Bitmap);
    end;



    دقت کنید که اگر بعد از اولین بار ساختن Bitmap دیگر نباید آن را بسازید

  7. #7
    ممنون از لطفتون
    ولی این حالت عکس داخل ImageList رو خیلی کوچک میندازه داخل Image
    اگه بخوام عکسهایی رو که به ImageList اضافه کردم به همون سای اصلی در Image قرار بگیرند باید چی کار کنم؟

  8. #8
    اگه بخوام عکسهایی رو که به ImageList اضافه کردم به همون سای اصلی در Image قرار بگیرند باید چی کار کنم؟
    ImageList عکس های بزرگ قبول نمیکنه. در نتیجه هر عکسی که در ImageList ذخیرخ کنید، اندازه اش کوچک هست. فکر کنم حداکثر اندازه تصویر برای ImageList باید 32x32 باشه.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  9. #9
    آقاي کشاورز

    تا 256 در 256 که من امتحان کردم، اشکالي ايجاد نشد. MSDN هم چيزي از محدوديتش نگفته.

    آقاي صلاحي

    اين کامپوننت براي نگاهداري تصاوير به اندازه هاي بزرگ مناسب نيست. محتويات تصوير بصورت رشته هگزادسيمال ذخيره ميشن که اندازه Resource رو خيلي بزرگ و بارگذاري رو کند ميکنه. بعضي وقتها ديگه بالا نميآد!

    براي اينکه تصوير رو تو برنامه نگه داريد اونو تو مستقيما تو رسورس بذاريد.

    اول يک فايل به نام مثلا Pics.rc درست کنيد که تو اون مينويسيد

    MyPic1 RCDATA "C:\test1\mypic.jpg"


    بعدش با brcc32ي بورلند همين رو کامپايل کنيد. در نهايت تو رويداد OnCreate فرمتون

    var
    x: TResourceStream;
    y: TJPEGImage;
    begin
    x := TResourceStream.Create(HInstance, 'MyPic', RT_RCDATA);
    y := TJPEGImage.Create;
    y.LoadFromStream(x);
    Image1.Picture.Bitmap := TBitmap.Create;
    Image1.Picture.Graphic.Assign(y);
    y.Free;
    x.Free;
    end;

  10. #10
    تا 256 در 256 که من امتحان کردم، اشکالي ايجاد نشد.
    من نتونستم با استفاده از متدهای Add و GetBitmap عکس بزرگی رو درش ذخیره کنم. عکس رو میگیره، ولی اونو Stretch یا Crop میکنه به سایز کوچیک. Help دلفی هم میگه که باید همه عکس ها یک سایز باشند.

    procedure TForm1.Button1Click(Sender: TObject);
    var
    Index : integer;
    begin
    ImageList1.Clear;
    //Import an image from Image1 control.
    Index := ImageList1.Add(Image1.Picture.Bitmap,nil);
    //Export an image from ImageList to Image2 control.
    ImageList1.GetBitmap(Index,Image2.Picture.Bitmap);
    Image2.Refresh;
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    if OpenPictureDialog1.Execute then
    Image1.Picture.LoadFromFile(OpenPictureDialog1.Fil eName);
    end;


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  11. #11
    من که بعد تغییر propertyهای عرض(Width) و ارتفاع(Height) به 256 و بعدش استفاده از خود ImageListEditor بدون مشکل این کار رو انجام دادم.

    البته اگه نخواهید تو Design Time بهش تصویر اضافه کنید، من چک کردم و با مقادیر بزرگ تر هم مشکلی نداره. در عین حال باید اندازه تمامی تصاویر یکسان باشه.

  12. #12
    ممنون از لطف شما
    آقای ودادیان اگه من مثلا 200 عکس داشته باشم ، همه رو باید به همین روش داخل فایل resource بذارم.
    در ضمن توی این خط
    x := TResourceStream.Create(HInstance, 'MyPic', RT_RCDATA);

    "My pic " اسم همون فایلی که توی فایل rs گذاشتید؟

  13. #13
    جناب استاد کشاورز ، من یه برنامه با دلفی دارم که باید یک محیط مالتی مدیا مثل نرم افزارهای Director یا Falsh رو باید شبیه سازی کنه. تقریبا باید 500 تا عکس رو برای منوها و دکمه ها و سایر قسمتها وارد دلفی کنم ، حالا به نظر شما بهتره عکسها رو چه جوری داخل برنامه قرار بدم؟

  14. #14
    نه؛ اشتباه لپی بود، باید بجای MyPic همون MyPic1 یعنی عنوان resource رو بذارید. برای درست کردن رسورس از تعداد زیادی فایل، بورلند امکانی نذاشته ولی تو VisualStudio می تونید همه فایلهاتون رو یکجا به یک resource اضافه و اون رو کامپایل کنید.

  15. #15
    پس این طوری یعنی باید برای هر عکس یه فایل rs ایجاد کنم ؟
    شما راه بهتری پیشنهاد نمیکنید؟

  16. #16
    گفتم که، چند تا فایل .rc لازم نیست. تو یک فایل، برای همه تصاویر رکورد مشابه ایجاد کنید.

  17. #17
    من که بعد تغییر propertyهای عرض(Width) و ارتفاع(Height) به 256 و بعدش استفاده از خود ImageListEditor بدون مشکل این کار رو انجام دادم.
    جالبه، تا حالا فکر می کردم که چون کامپوننت non-visual هست، اصلا Height و Width براش معنی نداره و بهش توجه نمی کردم.

    من یه برنامه با دلفی دارم که باید یک محیط مالتی مدیا مثل نرم افزارهای Director یا Falsh رو باید شبیه سازی کنه. تقریبا باید 500 تا عکس رو برای منوها و دکمه ها و سایر قسمتها وارد دلفی کنم ، حالا به نظر شما بهتره عکسها رو چه جوری داخل برنامه قرار بدم؟
    برای دکمه ها و تصاویر منوها همین ImageList خوبه بخصوص که Toolbar ها، ActionManager و Menu ها راحت باهاش کار می کنند. برای عکس های دیگه می تونید از Resource هم استفاده کنید.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  18. #18
    از لطف دوستان خیلی ممنونم
    ولی منظور من برای استفاده از Image List این بود که میخواستم دکمه هایی بسازم که دو حالت Up , Over داشته باشه ، مثل دکمه های فلش.
    راه های پیشنهادی شما بسیار عالی بود ولی مشکل اینه که چون باید سریع این تعویض تصاویر انجام بگیره استفاده از Resource کنده و ImageList هم عکسها رو به اندازه دلخواهی که من میخوام نمیتونه ذخیره کنه . ممنون میشم اگه راه دیگه ای برای این کار به من پیشنهاد کنید.
    به هر حال از لطفتون ممنونم

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •