سلام
من 1 برنامه نوشتم که 1 عکس رو باز میکنه و 4 تا ترک ویو برا رنگای قرمز و ابی و سبز و الفا
با حرکت دادن این ترک ویو ها عکس لایه ای به همون رنگ میگیره
حالا مسئله اینجاس که سرعتش خیلی کمه
این کد منه
Image img;
Color c;
public Form2()
{
InitializeComponent();
}
privatevoid button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
img = System.Drawing.Image.FromFile(openFileDialog1.FileName);
pictureBox1.Image = img;
pictureBox2.Image = img;
button1.Text = trackBar1.Value.ToString() + "," + trackBar2.Value.ToString() + "," + trackBar3.Value.ToString() + "," + trackBar1.Value.ToString();
trackBar1.Enabled = trackBar2.Enabled = trackBar3.Enabled = trackBar4.Enabled = true;
trackBar5.Enabled = trackBar6.Enabled = trackBar7.Enabled = trackBar8.Enabled = true;
}
}
privatevoid trackBar1_ValueChanged(object sender, EventArgs e)
{
Bitmap bmp = newBitmap(img);
pictureBox1.Image = img;
for (int i = 1; i < img.Width; i++)
for (int j = 1; j < img.Height; j++)
{
c = bmp.GetPixel(i, j);
c.ToArgb();
c = Color.FromArgb(trackBar1.Value, bmp.GetPixel(i, j).R, bmp.GetPixel(i, j).G, bmp.GetPixel(i, j).B);
bmp.SetPixel(i, j, c);
}
pictureBox2.Image = bmp;
button1.Text = trackBar1.Value.ToString() + "," + trackBar2.Value.ToString() + "," + trackBar3.Value.ToString() + "," + trackBar1.Value.ToString();
}
privatevoid trackBar2_ValueChanged(object sender, EventArgs e)
{
Bitmap bmp = newBitmap(img);
pictureBox1.Image = img;
for (int i = 1; i < img.Width; i++)
for (int j = 1; j < img.Height; j++)
{
c = bmp.GetPixel(i, j);
c.ToArgb();
c = Color.FromArgb(bmp.GetPixel(i, j).A, bmp.GetPixel(i, j).R, trackBar2.Value, bmp.GetPixel(i, j).B);
bmp.SetPixel(i, j, c);
}
pictureBox2.Image = bmp;
button1.Text = trackBar1.Value.ToString() + "," + trackBar2.Value.ToString() + "," + trackBar3.Value.ToString() + "," + trackBar1.Value.ToString();
}
privatevoid trackBar3_ValueChanged(object sender, EventArgs e)
{
Bitmap bmp = newBitmap(img);
pictureBox1.Image = img;
for (int i = 1; i < img.Width; i++)
for (int j = 1; j < img.Height; j++)
{
c = bmp.GetPixel(i, j);
c.ToArgb();
c = Color.FromArgb(bmp.GetPixel(i, j).A, trackBar3.Value, bmp.GetPixel(i, j).G, bmp.GetPixel(i, j).B);
bmp.SetPixel(i, j, c);
}
pictureBox2.Image = bmp;
button1.Text = trackBar1.Value.ToString() + "," + trackBar2.Value.ToString() + "," + trackBar3.Value.ToString() + "," + trackBar1.Value.ToString();
}
privatevoid trackBar4_ValueChanged(object sender, EventArgs e)
{
Bitmap bmp = newBitmap(img);
pictureBox1.Image = img;
for (int i = 1; i < img.Width; i++)
for (int j = 1; j < img.Height; j++)
{
c = bmp.GetPixel(i, j);
c.ToArgb();
c = Color.FromArgb(bmp.GetPixel(i, j).A, bmp.GetPixel(i, j).R, bmp.GetPixel(i, j).G, trackBar4.Value);
bmp.SetPixel(i, j, c);
}
pictureBox2.Image = bmp;
button1.Text = trackBar1.Value.ToString() + "," + trackBar2.Value.ToString() + "," + trackBar3.Value.ToString() + "," + trackBar1.Value.ToString();
}
تقریبا 10-15 ثانیه طول میکشه تا جواب بده که خیلی زیاده