PDA

View Full Version : سوال:کد نمایش عکس pictureboxدرwindows photoviewer



misagh1370
چهارشنبه 24 مهر 1392, 23:54 عصر
سلام به همه ی دوستان و مهندسین عزیز
دوستان گرامی من در برنامم یه pictureboxدارم که میخوام با کلیک روی یه دکمه ،تصویر موجود در جعبه تصویر رو در یک پنجره ی windows photoviewerنمایش دهم.دوستان عزیز هرکس این کد رو داره ممنون میشم بهم بده.
بی نهایت سپاس

hosein320
پنج شنبه 25 مهر 1392, 00:14 صبح
اگه درست متوجه شده باشم
Process.Start("Address")

misagh1370
پنج شنبه 25 مهر 1392, 00:19 صبح
ممنون .میشه یکم بیشتر توضیح بدین.تو قسمت آدرس مسیر رو چطور بدم؟

hosein320
پنج شنبه 25 مهر 1392, 00:30 صبح
باید آدرس عکستون رو بدین

misagh1370
جمعه 26 مهر 1392, 00:08 صبح
دوست عزیز عکسم توی پیکچرباکس هستش دیگه.
مهندسین عزیز لطفا راهنماییم کنید.:افسرده:

hosein320
جمعه 26 مهر 1392, 00:15 صبح
بالاخره عکس تو پیکچرباکست از یه جایی بار میشه دیگه
ادرسش رو بزارین تو اون تابع

misagh1370
جمعه 26 مهر 1392, 00:34 صبح
دوست من آخه آدرس متغیر هستش.نمیشه که ادرس بدم مثلا از فلان درایو فلان عکس رو نشون بده.باید بگم عکسی که الان کاربر انتخاب کرده و توی پیکچرباکسه رو توی photoviewerنشون بده.ممنونم که راهنمایی میکنید.

hosein320
جمعه 26 مهر 1392, 03:51 صبح
خب شما یه کار کن
موقعی که عکس رو تو پیکچرباکس لود میکنی آدرسش رو یه جا ذخیره کن (مثل خصوصیت tag)تو همون پیکچر باکس!

Fery666
جمعه 26 مهر 1392, 09:47 صبح
داداش عکسی رو که لود کردی توی پیکچر باکس بعد با دستوره :


Process.Start(PictureBox1.ImageLocation)


می تونی با windows photo viewer اجرا کنی .

misagh1370
جمعه 26 مهر 1392, 23:24 عصر
برادر من ،این کد هم نوشتم خطا میده.عجب معمایی شده واسم!!!!!اخطار زیر رو میده
cannot start process because a file name hase not been provided
مهندسین عزیز لطفا کمک کمک:اشتباه:

Fery666
شنبه 27 مهر 1392, 10:53 صبح
مگه شما عکس رو لود نمیکنی ؟؟؟؟

باید از ی جایی عکس رو به پیکچر باکس بدی تا نشون بده دیگه .

موقع دیزاین عکس رو به برنامه میدی ؟؟

ahmad009
شنبه 27 مهر 1392, 20:38 عصر
اگه عکسی که میخوای باز بشه تو پوشه نرم افزارت هست این کد رو استفاده کن

shell("test.jpg")

misagh1370
شنبه 27 مهر 1392, 23:47 عصر
نه وقتی برنامه اجرا میشه کاربر از هر مسیر میخواد عکس رو انتخاب میکنه و توی پیکچرباکس نشون میده.
دووووووووووووووستان خواهشا راهنماییم کنید.

poorman
یک شنبه 28 مهر 1392, 01:14 صبح
خب شما یه کار کن
موقعی که عکس رو تو پیکچرباکس لود میکنی آدرسش رو یه جا ذخیره کن (مثل خصوصیت tag)تو همون پیکچر باکس!

این دوستمون که حرف قشنگی زده ، این کار رو امتحان کردی شما ؟؟؟

میگی کاربر در حال اجرا عکس رو لود میکنه ، خب همونجا هم آدرس رو بریز تو یه متغیر یا تگ پیکچرباکس
بعد از آدرس استفاده کن ، با هر بار تغییر عکس هم آدرس عوض میشه دیگه !!!

misagh1370
دوشنبه 29 مهر 1392, 21:41 عصر
پورمن گرامی میشه با یه مثال واسم توضیح بدی که چطوراین آدرسهای متغیر رو بریزم توی تگ و چطور ازش استفاده کنم؟
سپاس

hosein320
دوشنبه 29 مهر 1392, 22:38 عصر
مگه شما عکس رو از فایل دیالوگ نمیدین به پیکچرباکس

picturebox1.image=image.fromfile (openfiledialog1.filename)
picturebox1.tag=openfiledialog1.filename

یونس ابراهیمی
سه شنبه 30 مهر 1392, 00:05 صبح
سلام ؛ کار سختی نیست ، به راحتی می تونید از کلاس Process واسه اینکار استفاده کنید :


private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();

if (ofd.ShowDialog() == DialogResult.OK)
{
this.pictureBox1.Image = Image.FromFile(ofd.FileName);
this.pictureBox1.Tag = ofd.FileName;
}
}

private void button2_Click(object sender, EventArgs e)
{
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_Fullscre en " + pictureBox1.Tag.ToString();
imageViewerProcess.Start();
}

** توضیحات تکمیلی در این لینک (http://www.w3-farsi.com/?p=1567)

misagh1370
سه شنبه 30 مهر 1392, 00:06 صبح
مگه شما عکس رو از فایل دیالوگ نمیدین به پیکچرباکس

picturebox1.image=image.fromfile (openfiledialog1.filename)
picturebox1.tag=openfiledialog1.filename


دوست عزیز ممنونم از راهنماییهاتون.این تکه کد رو به برنامم اضافه کردم .اما بازم اجرا نمیشه.آیا این خط کد اشتباهه؟

Process.Start(tag)

misagh1370
سه شنبه 30 مهر 1392, 00:17 صبح
سلام ؛ کار سختی نیست ، به راحتی می تونید از کلاس Process واسه اینکار استفاده کنید :


private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();

if (ofd.ShowDialog() == DialogResult.OK)
{
this.pictureBox1.Image = Image.FromFile(ofd.FileName);
this.pictureBox1.Tag = ofd.FileName;
}
}

private void button2_Click(object sender, EventArgs e)
{
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_Fullscre en " + pictureBox1.Tag.ToString();
imageViewerProcess.Start();
}
این کد هم نوشتم اما متاسفانه این خطا رو میده:اشتباه:
errore in c:\windows\system32\shimgvw.dll
missing entry:imageview_fullsc

یونس ابراهیمی
سه شنبه 30 مهر 1392, 00:27 صبح
ببینید داخل کد به اشتباه وارد شده یعنی ادیتور به اشتباه فاصله انداخته بین کدهام ، شما اون فاصله ها رو اصلاح کنید درست میشه در ضمن ImageView_Fullsc reen رو به شکل
ImageView_Fullscreen باید بنویسید

misagh1370
سه شنبه 30 مهر 1392, 00:34 صبح
ممنون .فاصله رو برداشتم خطا نمیده اما اجرا هم نمیشه.راستی من @ هم نگذاشتم چون ازش خطا میگیره
حالا چکار کنم؟؟؟؟؟؟؟؟؟؟

hosein320
سه شنبه 30 مهر 1392, 00:34 صبح
به این صورت
Process.Start(picturebox1.tag)

misagh1370
سه شنبه 30 مهر 1392, 01:01 صبح
hosein320 (http://barnamenevis.org/member.php?275894-hosein320):اینجوری هم نوشتم اجرا نشد!!!
یونس ابراهیمی: (http://barnamenevis.org/member.php?272349-%DB%8C%D9%88%D9%86%D8%B3-%D8%A7%D8%A8%D8%B1%D8%A7%D9%87%DB%8C%D9%85%DB%8C)
کدی رو که دادی درست نوشتم اما اجرا نمیشه.

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

Dim OpenImage As New OpenFileDialog
OpenImage.Title = "Open Your Image"
OpenImage.Filter = "All Images (*.jpg;*.png;*.ico;*.bmp;*.gif)|*.jpg;*.png;*.ico; *.bmp;*.gif|JPG Images (*.jpg)|*.jpg|PNG Images (*.png)|*.png|ICON Images (*.ico)|*.ico|BMP Images (*.bmp)|*.bmp|GIF Images (*.gif)|*.gif"
If OpenImage.ShowDialog = Windows.Forms.DialogResult.OK Then
PictureBox1.Image = System.Drawing.Image.FromFile(OpenImage.FileName)
PictureBox1.Tag = OpenFileDialog1.FileName

End If


End Sub


Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click

Dim imageViewerProcess As System.Diagnostics.Process = New System.Diagnostics.Process()
imageViewerProcess.StartInfo.CreateNoWindow = False
imageViewerProcess.StartInfo.FileName = "rundll32.exe"
imageViewerProcess.StartInfo.Arguments = "C:\WINDOWS\System32\shimgvw.dll,ImageView_Fullscre en " + PictureBox1.Tag.ToString()
imageViewerProcess.Start()


End Sub



دوستان کمک کنید این مشکل حل بشه
ممنون:ناراحت:

younes221
سه شنبه 30 مهر 1392, 10:50 صبح
misagh1370 دوست عزیز کمی دقت کن ،

در خط 8 از همون کدی که بالا قرار دادی باید به جای OpenFileDialog1.FileName بنویسی OpenImage.FileName !

من کد رو با این تغییر نوشتم بدون هیچ مشکلی اجرا شد و به درستی کار کرد !

hosein320
سه شنبه 30 مهر 1392, 14:28 عصر
اینو قبلا نوشته بودم
کارتو راه میندازه فکر کنم

Hossis
سه شنبه 30 مهر 1392, 22:51 عصر
راه راحتش اینه که اول از توابع موجود در کلاس Image استفاده کرده و عکس رو در یک فایل ذخیره کنید
(فرض رو بر این بگیرید که این عکس از هوا اومده و قبلا در هیچ فایلی قرار نداشته و مثلا از کلیپبورد کپی شده یا ...)
بعد که در فایل ذخیره شد، با استفاده از دستور shell یا پروسس، توسط نمایشگر ویندوز بازش می کنید
مثال
With PictureBox1
.Image = Clipboard.GetImage
.Image.Save(Application.StartupPath & "1.jpg", Imaging.ImageFormat.Jpeg)
Process.Start(Application.StartupPath & "1.jpg")
End With

من این کار رو انجام دادم و جواب داد!

Hossis
سه شنبه 30 مهر 1392, 22:52 عصر
راه راحتش اینه که اول از توابع موجود در کلاس Image استفاده کرده و عکس رو در یک فایل ذخیره کنید
(فرض رو بر این بگیرید که این عکس از هوا اومده و قبلا در هیچ فایلی قرار نداشته و مثلا از کلیپبورد کپی شده یا ...)
بعد که در فایل ذخیره شد، با استفاده از دستور shell یا پروسس، توسط نمایشگر ویندوز بازش می کنید
مثال
With PictureBox1
.Image = Clipboard.GetImage
.Image.Save(Application.StartupPath & "1.jpg", Imaging.ImageFormat.Jpeg)
Process.Start(Application.StartupPath & "1.jpg")
End With

من این کار رو انجام دادم و جواب داد!
البته اولش کلید پرینت اسکرین رو از صفحه کلید زدم که عکس صفحه نمایش بره تو کلیپ بورد
این کار رو به این خاطر انجام دادم که متوجه باشیم همیشه عکس پیکچر باکس از یک فایل، لود نمی شه

misagh1370
سه شنبه 30 مهر 1392, 23:44 عصر
younes221 (http://barnamenevis.org/member.php?217192-younes221) درست گفتن مشکل از خط 8 بود.از راههنمایی های همتون سپاسگذارم.