واضح آرشیو وب فارسی:سایت ریسک: در مورد نمایش عکس در pictureBox A_123 07 آبان 1389, 12:23سلام من یه برنامه نوشتم. بعد یه FileListBox گزاشتم. حالا میخوام وقتی کاربر روی فایل-لیست باکس کلیک کرد؛ اگر پسوند آن فایل مثلا JPG باشه , اونوقت همون عکسه در PictureBox لود بشه. به صورت استرچ. راهنمایی بفرمایید:rose: امیدوارم منظورمو رسونده باشم! the_king 07 آبان 1389, 20:19سلام من یه برنامه نوشتم. بعد یه FileListBox گزاشتم. حالا میخوام وقتی کاربر روی فایل-لیست باکس کلیک کرد؛ اگر پسوند آن فایل مثلا JPG باشه , اونوقت همون عکسه در PictureBox لود بشه. به صورت استرچ. راهنمایی بفرمایید:rose: امیدوارم منظورمو رسونده باشم! اگه اسم FileListBox تون File1 و اسم PictureBox تون Picture1 باشه : Private Sub File1_Click() Dim Pos As Long Dim Path As String Dim Pic As StdPicture Path = File1.Path & IIf(Right(File1.Path, 1) = "", "", "") & File1.FileName Pos = InStrRev(Path, ".") If Pos > 1 Then Select Case LCase(Mid(Path, Pos + 1)) Case "jpg", "jpeg", "jpe", "jfif", "jfi" Set Pic = LoadPicture(Path) Picture1.AutoRedraw = True Picture1.PaintPicture Pic, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight End Select End If End Sub A_123 09 آبان 1389, 00:20خیلی ممنون. فقط اگه میشه راجع به اینکه چجوری هستند این توابع و طرزکار چطوریه و ... یه توضیح بدید( به عبارتی چه اتفاقی می افتذ در این برنامه به صورت قدم به قدم!) مثلا StdPicture چیه؟ Set Pic = LoadPicture(Path) چط.ریه؟ the_king 09 آبان 1389, 07:05خیلی ممنون. فقط اگه میشه راجع به اینکه چجوری هستند این توابع و طرزکار چطوریه و ... یه توضیح بدید( به عبارتی چه اتفاقی می افتذ در این برنامه به صورت قدم به قدم!) مثلا StdPicture چیه؟ Set Pic = LoadPicture(Path) چط.ریه؟ اول یک متغیر Pos رو تعریف می کنیم تا بعدا با استفاده از متغیر Pos موقعیت کاراکتر نقطه (Dot) رو توی رشته پیدا کنیم : Dim Pos As Long برای اینکه مسیر هر کدوم از فایل های تصویر رو بررسی کنیم یک متغیر به اسم Path هم تعریف می کنیم : Dim Path As String خود یک تصویر یک شیء از نوع StdPicture است، مثل یک تیکه از حافظه RAM که تصویر در اون قرار می گیره. StdPicture خودش به تنهایی نمایشی نداره، یعنی مثل کنترل Image یا PictureBox نیست که مستقیما روی فرم قرار بگیره، همه اطلاعات تصویر رو در حافظه RAM قرار میده. بعدا می توانیم این تصویر رو با یک کنترل مثل Image یا PictureBox نمایش بدهیم. ما یک متغیر از نوع StdPicture تعریف می کنیم تا بعدا تصویری که از فایل می خوانیم را داخلش قرار بدهیم : Dim Pic As StdPicture File1.Path مسیر پوشه ای است که فایل های داخل اون رو لیست می کنه، مثلا C:New Folder یا :C File1.FileName هم اسم فایلی است که قراره تصویر از داخلش خونده بشه، مثلا sample.jpg ما باید مسیر دقیق فایل تصویر رو با ترکیب کردن File1.Path و File1.FileName بسازیم، اما یک نکته ای وجود داره. اگر رشته File1.Path به کاراکتر ختم نشه (مثلا C:New Folder) اونوقت باید بین دو رشته یک کاراکتر اضافه کنیم : "C:New Folder" + "" + "sample.jpg" اما اگه رشته File1.Path به کاراکتر ختم بشه (مثلا :C) آنوقت نباید بین دو رشته کاراکتر دیگری قرار بگیره : "C:" + "sample.jpg" تابع IIf رو به همین منظور بکار می بریم، اگه آخرین کاراکتر سمت راست رشته File1.Path برابر باشه... IIf(Right(File1.Path, 1) = "" آنوقت نیازی به کاراکتر اضافه ای نیست، اما در غیر اینصورت رشته "" بین دو رشت اضافه میشه : Path = File1.Path & IIf(Right(File1.Path, 1) = "", "", "") & File1.FileName حالا ما مسیر کامل فایل رو در متغیر Path داریم. اما باید بررسی کنیم که آیا پسوند فایل jpeg است یا خیر. برای پیدا کردن مقدار پسوند فایل، باید موقعیت آخرین کاراکتر نقطه رو در رشته Path پیدا کنیم. تابع InstrRev موقعیت آخرین مورد یک رشته در رشته دیگه رو اعلام می کنه : Pos = InStrRev(Path, ".") حالا می دونیم که مقدار Pos موقعیت آخرین کاراکتر . در رشته Path است. اگر 0 باشه یعنی رشته اصلا پسوند نداره و اگر بزرگتر از 0 باشه، Pos شماره اون کاراکتر رو مشخص می کنه. اگر رشته پسوند داشت... If Pos > 1 Then کاراکتر شماره Pos که نقطه است، از کاراکتر شماره Pos + 1 به بعد هم پسوند فایل است، که باید بررسی اش کنیم. با تابع Mid قسمت پسوند رو از رشته Path جدا می کنیم تا بررسی بشه. اما اول پسوند را با تابع LCase به حروف کوچک تبدیل می کنیم تا در بررسی بین حروف بزرگ و کوچک مثل رشته JpG و jPg فرقی نباشه. Select Case LCase(Mid(Path, Pos + 1)) اگر رشته پسوند یکی از این چند پسوند مجاز برای فایل های JPEG بود... Case "jpg", "jpeg", "jpe", "jfif", "jfi" تصویر موجود در آن فایل رو با تابع LoadPicture می خوانیم و در متغیر Pic قرار می دهیم. دقت کنید که الان تصویر در حافظه RAM قرار گرفته و هنوز صورت نمایشی نشون داده نشده. برای مقدار دهی به اشیاء (مثلا StdPicture یا StdFont یا Control یا Object) باید از Set استفاده کرد، یعنی قبل از اسم متغیر بایستی عبارت Set درج شود : Set Pic = LoadPicture(Path) برای آنکه تصویری که نمایش می دهیم ثابت و پایدار باشد و از صفحه PictureBox پاک نشود، بایستی مشخصه AutoRedraw را در Picture1 به مقدار True تغییر دهیم، وگرنه اگر به هر دلیلی روی PictureBox فرم دیگری قرار بگیرد و بعدا کنار برود، تصویر موجود در PictureBox پاک می شود و اثری از آن نمی ماند : Picture1.AutoRedraw = True حالا باید تصویر را در PictureBox ترسیم کنیم، در پارامتر اول تصویر رو مشخص می کنیم، یعنی Pic در پارامتر دوم و سوم موقعیت x و y جایی رو در PictureBox مشخص می کنیم که نمایش از آن موقعیت آغاز شود، مختصات 0,0 موقعیت گوشه چپ-بالای PictureBox است که ترسیم از آنجا آغاز خواهد شد. پارامتر چهارم و پنجم طول و عرض تصویری خواهد بود که در PictureBox ترسیم می شود، این ابعاد ربطی به طول و عرض خود تصویر ما ندارند، بلکه ابعاد نمایشی داخل PictureBox هستند. برای همین است که ما از مقدار طول و عرض خود PictureBox (یعنی Picture1.ScaleWidth و Picture1.ScaleHeight ) استفاده می کنیم تا تمامی قسمت های PictureBox را با تصویر بپوشاند، حتی اگر تصویر واقعی خیلی بزرگتر یا کوچکتر از این ابعاد باشد. این دقیقا همان ویژگی Stretch را بوجود می آورد : Picture1.PaintPicture Pic, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight ما با پسوند های دیگر برای فایل ها کاری نداریم، پس در ادامه صرفا Select ما را می بندیم : End Select شرطی که بررسی می کرد که آیا فایل پسوند دارد یا خیر را نیز می بندیم : End If سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 1953]