0 امتیاز

سلام
 

در این پست نحوە نمایش عکس داخل PictureBox در برنامه Windows Photo Viewer اموزش دادە شدە و بدون مشکل کار میکنە

http://www.w3-farsi.com/%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%B9%DA%A9%D8%B3-%D8%AF%D8%A7%D8%AE%D9%84-picturebox-%D8%AF%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-windows-photo-viewer/

 

 ببینید من  یە باتن ایجاد کردم کە عکس رو براوس میکنە و در داخل یک پیکچر باکس برای من نمایش میدە و وقتی روی عکس دابل کلیک میکنم توی برنامەWindows Photo Viewer باز میشە تا اینجا مشکلی نیست ولی من یک کوئری جستجو در برنامم اضافە کرد کە عکس رو در دیتابیس ریترایو میکنە و در همون پیکچر باکس نمایش میدە ولی وقتی دابل کلیک روی عکس میکنم مثل قبل توسط برنامە  Windows Photo Viewer باز نمیشە ، فکر کنم منظورم واضحە

این از کوئری جستجو

 private void bt_search_Click(object sender, EventArgs e)
        {

            var db = new DataClasses1DataContext();
            tb_import tb1 = new tb_import();
            var Qsearch = db.tb_imports.Where(c => c.name.Contains(txt_search.Text));

            if (Qsearch.Count() == 0)
            {
                MessageBox.Show("not found");

            }
            else
            {

                this.pictureBox1.Image = ByteArrayToImage(Qsearch.First().img.ToArray());
                dataGridViewX1.DataSource = Qsearch;

            }
        }

اینم از کدی کە در اموزش همین سایت استفادە شدە 

 private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
        {
            if (pictureBox1.Tag != null)
            {
                System.Diagnostics.Process imageViewerProcess = new System.Diagnostics.Process();
                imageViewerProcess.StartInfo.CreateNoWindow = false;
                imageViewerProcess.StartInfo.FileName = "rundll32.exe";
                imageViewerProcess.StartInfo.Arguments =
                        @"C:\WINDOWS\System32\shimgvw.dll,ImageView_Fullscreen "
                                           + pictureBox1.Tag.ToString();
                imageViewerProcess.Start();
            }
        }

 

نمیدنم مشکل از کجاست :/

بسته شده
ببخشید پست ویرایش شد .
توسط (121 امتیاز) 1 4 10
سلام ..خواهش می کنم...آره منظورتون واضحه..من الان سیستم دم دستم نیست..سعی می کنم تا شب جوابتونو بدم
توسط (6,480 امتیاز) 6 17 129

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

سلام ، 

دوست عزیز در اون آموزشی که در سایت قرار داده بودیم  ، فایل بر روی دیسک سخت قرار داشت و دارای یک " مسیر " بود . 

در این کدی که شما قرار دادین مثل اینکه عکس در دیتابیس ذخیره شده و دارای مسیر " نیست " . 

شما ابتدا باید عکس رو با استفاده از کد زیر ،  روی دیسک سخت ذخیره کنید :

pictureBox.Image.Save(@"Path",ImageFormat.Jpeg);

 -- Path : یک مسیر روی هارد رو نشون میده که شما باید ست کنید .

سپس همین مسیر رو در خاصیت Tag کنترل PictureBox قرار بدین : 

 

this.pictureBox1.Tag = "Path" ;

دقت کنید که Path باید در هر دو دستور مشابه باشند .

سایر قسمت ها شبیه کد اون آموزش هست ( رویداد کلیک PictureBox ) .

ممنون دوست عزیز  مثل همیشە سوال رو بی جواب نذاشتین 

حالا راهی هست بدون اینکە عکس ذخیرە کنم رو دیسک سخت اون رو باز کنم(Windows Photo Viewer) چون من خودم اونو تو دیتابیس ذخیرە کردم  ؟

ویرایش شده توسط
توسط (121 امتیاز) 1 4 10

خواهش می کنم دوست خوبم

خیر برای باز کردن فایل با یک برنامه خارجی حتما باید آرایه بایت های تشکیل دهنده ی تصویر رو به یک " فایل " روی دیسک سخت تبدیل کنید . راه کاری که وجود داره اینه که فایل رو در یک مسیر موقت ذخیره کنید مثل پوشه Temp در ویندوز که برای نگهداری فایل های موقت به کار می ره . و سپس اونو با برنامه Windows Photo Viewer باز کنید . برای بدست آوردن مسیر پوشه Temp می تونید از کد زیر استفاده کنید :

            String tmpFile = Path.GetTempFileName();

 

توسط (6,145 امتیاز) 5 11 116
سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,924 کاربر

دسته بندی ها

...