maryam.e
شنبه 12 دی 1394, 15:17 عصر
با سلام من از اين دستور براي تغيير سايز عكس در برنامه paint استفاده كردم مشكلش اينجاس كه فقط يك بار تصوير رو بزرگ ميكنه و ديگه هر چي كليك كنم تصوير تغيير نميكنه و همچنين با انتخاب يه ابزار ديگه ، تصوير به حالت اوليه برميگرده مشكلش از چيه من خودم فكر ميكنم چون تو كل برنامه از bmp استفاده ميشه وقتي يه ابزار ديگه رو انتخاب مي كنم اندازه bmp به حالت اوليه برميگرده
private void pictureBox1_Click(object sender, EventArgs e)
{
int h = bmp.Height;
int w = bmp.Width;
int rh = (int)(h * 2);
int rw = (int)(w * 2);
Bitmap temp = new Bitmap(rw, rh);
Graphics g1 = Graphics.FromImage((Image)temp);
g1.InterpolationMode = InterpolationMode.HighQualityBicubic;
g1.DrawImage(bmp, 0, 0, rw, rh);
g1.Dispose();
pictureBox1.Image = temp;
}
اين تابع هم براي ابزار سطل رنگ استفاده كردم كه وقتي در حالت اجرا از اين ابزار استفاده كنم برنامه كلا هنگ ميكنه
private void fill(Bitmap picture, int x, int y, Color bcolor)
{
if (x > 0 && x < picture.Width && y > 0 && y < picture.Height)
{
Point p = new Point(x, y);
Stack<Point> s = new Stack<Point>();
s.Push(p);
while (s.Count != 0)
{
p = s.Pop();
Color ccolor = picture.GetPixel(p.X, p.Y);
if (ccolor == bcolor)
{
picture.SetPixel(p.X, p.Y, ccolor);
s.Push(new Point(p.X - 1, p.Y));
s.Push(new Point(p.X + 1, p.Y));
s.Push(new Point(x, p.Y - 1));
s.Push(new Point(x, p.Y + 1));
}
}
}
}
توي رويداد picture ،mouse down ازش استفاده كردم
fill(bmp, e.X, e.Y, bmp.GetPixel(e.X, e.Y));
pictureBox1.Image = bmp;
ممنون ميشم راهنماييم كنين
private void pictureBox1_Click(object sender, EventArgs e)
{
int h = bmp.Height;
int w = bmp.Width;
int rh = (int)(h * 2);
int rw = (int)(w * 2);
Bitmap temp = new Bitmap(rw, rh);
Graphics g1 = Graphics.FromImage((Image)temp);
g1.InterpolationMode = InterpolationMode.HighQualityBicubic;
g1.DrawImage(bmp, 0, 0, rw, rh);
g1.Dispose();
pictureBox1.Image = temp;
}
اين تابع هم براي ابزار سطل رنگ استفاده كردم كه وقتي در حالت اجرا از اين ابزار استفاده كنم برنامه كلا هنگ ميكنه
private void fill(Bitmap picture, int x, int y, Color bcolor)
{
if (x > 0 && x < picture.Width && y > 0 && y < picture.Height)
{
Point p = new Point(x, y);
Stack<Point> s = new Stack<Point>();
s.Push(p);
while (s.Count != 0)
{
p = s.Pop();
Color ccolor = picture.GetPixel(p.X, p.Y);
if (ccolor == bcolor)
{
picture.SetPixel(p.X, p.Y, ccolor);
s.Push(new Point(p.X - 1, p.Y));
s.Push(new Point(p.X + 1, p.Y));
s.Push(new Point(x, p.Y - 1));
s.Push(new Point(x, p.Y + 1));
}
}
}
}
توي رويداد picture ،mouse down ازش استفاده كردم
fill(bmp, e.X, e.Y, bmp.GetPixel(e.X, e.Y));
pictureBox1.Image = bmp;
ممنون ميشم راهنماييم كنين