بله آقای حسنپور همونطور که فرمودین اون usingها رو اضافه کردم و اون کد درست شد اما بااینکه دقیقا اون چیزی رو که فرمودین انجام دادم بازم saveم کار نمیکنه:
کدی که تو این فرم نوشتین و نحوه استفاده از این فرم تو فرم اصلی رو اینجا قرار بدین بصورت کد . میخوام ببینم چطور این فرم دوم رو ساختید و توی این فرم دوم چی نوشتید .
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace example
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public int Q;
Graphics g;
Bitmap bitmap;
Image image;
private void btn1_Click(object sender, EventArgs e)
{
Q = 1;
}
int a; int b;
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
a = e.X;
b = e.Y;
}
private void panel1_Click(object sender, EventArgs e)
{
if (Q==1)
{
g.DrawImage(btn1.Image, a, b);
}
if (Q==2)
{
g.DrawImage(btn2.Image, a, b);
}
if (Q==3)
{
g.DrawImage(btn3.Image, a, b);
}
if (Q==4)
{
g.DrawImage(btn4.Image, a, b);
}
if (Q==5)
{
g.DrawImage(btn5.Image, a, b);
}
}
private void btn_open_Click(object sender, EventArgs e)
{
F_OPEN FOpen = new F_OPEN();
FOpen.ShowDialog();
}
private void btn_new_Click(object sender, EventArgs e)//چرا بار اول کل صفحه رو پاک میکنه اما برای دفعات بعدی این کار رو انجام نمیده
{
this.panel1.BackColor = Color.White;
}
این فرم دومی هست که میاد open,save رو انجام میدهدر واقع با همون کدی که شما فرمودین)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
namespace example
{
public partial class F_OPEN : Form
{
public F_OPEN()
{
InitializeComponent();
}
Bitmap bitmap;
Image image;
private void btn_Open_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
image = Image.FromFile(openFileDialog1.FileName);
MemoryStream ms = new MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
bitmap = new Bitmap(Image.FromStream(ms));
pictureBox1.Image = Image.FromStream(ms);
AlterImage(bitmap);
image.Dispose();
}
}
private void AlterImage(Bitmap bitmap)
{
for (int i = 0; i < bitmap.Height; i++)
{
bitmap.SetPixel(i / 2, i / 2, Color.Blue);
}
}
ارور هم نمیده ؟
مطمئنید عکس رو ذخیره نمیکنه ؟ کنار فایل اجرایی پروژه رو دیدین ؟ چون این آدرسی که تو عکس آخرتون مشخصه زده s.jpg که چون مسیر بهش ندادید میره کنار فایل اجرایی برنامه .
برای اون بخش تغییر رنگ پنل هم از یه رفرش بعدش استفاده کنید باید درست بشه بنظرم .
این نام اون تصویری هست که میخوام به این نام save بشه و این نام رو خودم دادم
شما وقتی برای ذخیره سازی یا لود کردن چیزی آدرس کامل اون رو نمینویسید و فقط از یک اسم با یک پسوند استفاده میکنید . برنامه اون رو بعنوان یک آدرس نسبی در نظر میگیره .(نسبت به آدرس فعلی خودش باهاش برخورد میکنه) و این یعنی اینکه کنار خودش بدنبال اون فایل میگرده (برای لود کردن) و یا اونو کنار خودش ذخیره میکنه . منظور من از کنار خودش جایی هست که فایل اجرایی برنامتون اونجا قرار داره و از اونجا برنامه رو اجرا کردید .
در نتیجه شما الان باید برید تو پوشه دیباگ و اونجا رو نگاه کنید .
نوشته اصلی توسط NIIT
منظورتون برای قسمتی که بخواد panelمو کامل پاک کنه؟
شما وقتی برای ذخیره سازی یا لود کردن چیزی آدرس کامل اون رو نمینویسید و فقط از یک اسم با یک پسوند استفاده میکنید . برنامه اون رو بعنوان یک آدرس نسبی در نظر میگیره .(نسبت به آدرس فعلی خودش باهاش برخورد میکنه) و این یعنی اینکه کنار خودش بدنبال اون فایل میگرده (برای لود کردن) و یا اونو کنار خودش ذخیره میکنه . منظور من از کنار خودش جایی هست که فایل اجرایی برنامتون اونجا قرار داره و از اونجا برنامه رو اجرا کردید
آقای حسنپر الان این تصاویر رو ببینین:
اینجا در قسمت تکس آدرسو میذارم:
بعد تصویر رو انتخاب میکنم:
وقتی دکمه save رو میزنم این خطا رو میده:
نوشته اصلی توسط Master
در نتیجه شما الان باید برید تو پوشه دیباگ و اونجا رو نگاه کنید .
حالا شما میفرمایین که برم پوشه debugرو ببینم:
من رفتم توی قسمت designer:
و وقتی برنامه رو اجرا میکردم از این قسمت دیگه نمیتونست جلوتر بره و کدها رو اجرا کنه:
آدرس معتبر نیست و وقتی دارید آدرس میدید برای سیو کردن باید نام کامل رو بهش بدید .
یعنی باید مثل شکل زیر باشه .
C:\Users\Moazame\Desktop\Example\mypicture.jpeg
شما تو Designer چیکار دارید ؟ من گفتم تو پوشه دیباگ رو ببینید .
اون ارور رو هم قبلا توضیح دادم و گفتم دلیلش چیه .
شما آدرس رو درست کنید لطفا و تست کنید . و حتما هم تو پوشه دیباگ رو ببینید و بگید که آیا عکسی اونجا پیدا میکنید ( عکسهای قبلی که میخواستید سیو بشن ببینید اونجا هستن یا نه ) .
هر ارور دیگه ای هم گرفتید بگید .
علاقه مندی ها (Bookmarks)