#c#
#c#
Вопрос:
Я хочу, чтобы в программе была функция увеличения и уменьшения масштаба. (2x, 4x, 8x) Но я не могу использовать доступную функцию масштабирования.Я должен написать новый.Я выполнил импорт растрового изображения.И я могу получить цвет rgb для каждого пикселя.Я создал матрицы colorR, colorG и colorB для цветов r, g и b.После этого я подумал, что смогу создать увеличенное в 2 раза изображение с помощью SolidBrush на панели.Я нарисую 2 изображения следующим образом:
Исходное изображение (например, 3×3 пикселя) (p = цвет пикселя и «_» для пробела)
р1_р2_р3
p4_p5_p6
p7_p8_p9
увеличенное изображение в 2 раза (6×6 пикселей из-за размера исходного изображения) (p = цвет пикселя исходного изображения и «_» для пробела)
р1_р1_р2_р2_р3_р3
р1_р1_р2_р2_р3_р3
п4_п4_п5_п5_п6_п6
п4_п4_п5_п5_п6_п6
p7_p7_p8_p8_p9_p9
p7_p7_p8_p8_p9_p9
Я написал один цикл, но он не сработал, потому что он полностью неправильный.Итак, как я могу писать для циклов?
private void button4_Click(object sender, EventArgs e) {
listBox1.Items.Clear();//insignificant
listBox2.Items.Clear();//insignificant
listBox3.Items.Clear();//insignificant
using (OpenFileDialog dlg = new OpenFileDialog()) {
dlg.Title = "Open Image";
dlg.Filter = "*.bmp|*.bmp|*.*|*.*";
if (dlg.ShowDialog() == DialogResult.OK) {
pictureBox1.Image = new Bitmap(dlg.FileName);
}
}
}
private void button1_Click(object sender, EventArgs e) {
Graphics my2xImage = panel1.CreateGraphics();
int bmpHeight = pictureBox1.Image.Height;
int bmpWidth = pictureBox1.Image.Width;
Bitmap bmpFirst = (Bitmap)pictureBox1.Image.Clone();
int[,] colorR = new int[bmpHeight, bmpWidth];
int[,] colorG = new int[bmpHeight, bmpWidth];
int[,] colorB = new int[bmpHeight, bmpWidth];
for (int y = 0; y < bmpHeight; y ) {
for (int x = 0; x < bmpWidth; x ) {
Color pixelColor = bmpFirst.GetPixel(x, y);
colorR[x, y] = pixelColor.R;
colorG[x, y] = pixelColor.G;
colorB[x, y] = pixelColor.B;
listBox1.Items.Add("(" (x 1) "," (y 1) ")" " " colorR[x, y]);//insignificant
listBox2.Items.Add("(" (x 1) "," (y 1) ")" " " colorG[x, y]);//insignificant
listBox3.Items.Add("(" (x 1) "," (y 1) ")" " " colorB[x, y]);//insignificant
}
}
//for (int y = 0; y < (bmpHeight * 2); y )
//{
// for (int x = 0; x < (bmpWidth * 2); x )
// {
// Color mySpecialColor = Color.FromArgb(colorR[x,y], colorG[x,y], colorB[x,y]);
// SolidBrush pixelBrush = new SolidBrush(mySpecialColor);
// my2xImage.FillRectangle(pixelBrush, x, y, 1, 1);
// }
//}
}
private void button5_Click(object sender, EventArgs e) {
}
private void button2_Click(object sender, EventArgs e) {
}
Ответ №1:
Это безумие, но если вам действительно нужно сделать это таким образом, попробуйте что-то вроде этого:
int dx = x*2;
int dy = y*2;
colorR[dx ,dy ] = pixelColor.R;
colorR[dx 1,dy ] = pixelColor.R;
colorR[dx ,dy 1] = pixelColor.R;
colorR[dx 1,dy 1] = pixelColor.R;
colorG[dx ,dy ] = pixelColor.G;
colorG[dx 1,dy ] = pixelColor.G;
colorG[dx ,dy 1] = pixelColor.G;
colorG[dx 1,dy 1] = pixelColor.G;
colorB[dx ,dy ] = pixelColor.B;
colorB[dx 1,dy ] = pixelColor.B;
colorB[dx ,dy 1] = pixelColor.B;
colorB[dx 1,dy 1] = pixelColor.B;
Комментарии:
1. Я попробовал ваш путь. Но это не сработало. Я думаю, что он перезаписывает матрицу. Таким образом, нарисованная копия изображения первого изображения и остальные пиксели черные. Точно так же: ссылка
2. Если связанное изображение — это то, что вы сделали, значит, вы не пробовали мой путь. Вы попробовали какой-то странный способ собственного изобретения, но не мой способ. Мой способ указан в моем ответе. И это будет работать. Если вы попробуете это.
3. Мне показалось то же самое. Я ищу 10 минут, чтобы понять, как писать по-своему, но я не могу этого сделать. Как получить каждый пиксель изображения и как установить для каждого пикселя 2-кратное увеличение изображения? Не могли бы вы написать код, пожалуйста? 🙁
4. Посмотрите на код, который я опубликовал. Посмотрите на свой код. Найдите различия. Сделайте свой код похожим на мой код. Конкурсы.
5. Я, наконец, понял. Итак, я выиграл 🙂 Спасибо за вашу поддержку. Теперь я могу продолжить свой проект. Следующим шагом увеличьте масштаб в 4 раза, 8 раз и уменьшите в 2 раза, 4 раза, 8 раз. Я понимаю логику. Теперь легче продолжить 🙂 Еще раз спасибо.
Ответ №2:
Вы должны использовать DrawImage
метод Graphics
класса.
Bitmap bmpFirst = (Bitmap)pictureBox1.Image.Clone();
Graphics g = Graphics.FromImage(bmpFirst);
// Draw image to screen.
g.DrawImage(newImage, destRect, x, y, width, height, units);
Посмотрите здесь: https://msdn.microsoft.com/en-us/library/ms142045 (v = против 110).aspx
Посмотрите также здесь: https://msdn.microsoft.com/en-us/library/k0fsyd4e (v = против 110).aspx
Вы даже можете установить режим интерполяции: https://msdn.microsoft.com/en-us/library/system.drawing .drawing2d.interpolationmode(v = vs.110).aspx
Вы ищете режим интерполяции NearestNeighbor.
Комментарии:
1. Спасибо за ссылки. Но я не знаю, почему я не могу написать e.Graphics. Часть drawImage (бла, бла, бла). Я не могу написать e и поставить точку, но показывает только эти команды: «Equals, GetHashCode, GetType, toString» Вы знаете, почему команда «Графика» не всплывала?
2. Моя вина. Это должно быть
g.DrawImage ()
Ответ №3:
Он и есть решение.
private void button4_Click(object sender, EventArgs e )
{
listBox1.Items.Clear();
listBox2.Items.Clear();
listBox3.Items.Clear();
using (OpenFileDialog dlg = new OpenFileDialog())
{
dlg.Title = "Open Image";
dlg.Filter = "*.bmp|*.bmp|*.*|*.*";
if (dlg.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = new Bitmap(dlg.FileName);
}
}
}
private void button1_Click(object sender, EventArgs e)
{
int bmpHeight = pictureBox1.Image.Height;
int bmpWidth = pictureBox1.Image.Width;
Bitmap bmpFirst = (Bitmap)pictureBox1.Image.Clone();
Graphics g = panel1.CreateGraphics();
int[,] colorR = new int[bmpHeight*2 , bmpWidth*2];
int[,] colorG = new int[bmpHeight*2 , bmpWidth*2];
int[,] colorB = new int[bmpHeight*2 , bmpWidth*2];
for (int y = 0; y < bmpHeight; y )
{
for (int x = 0; x < bmpWidth; x )
{
Color pixelColor = bmpFirst.GetPixel(x, y);
int dx = x * 2;
int dy = y * 2;
colorR[dx, dy] = pixelColor.R;
colorR[dx 1, dy] = pixelColor.R;
colorR[dx, dy 1] = pixelColor.R;
colorR[dx 1, dy 1] = pixelColor.R;
colorG[dx, dy] = pixelColor.G;
colorG[dx 1, dy] = pixelColor.G;
colorG[dx, dy 1] = pixelColor.G;
colorG[dx 1, dy 1] = pixelColor.G;
colorB[dx, dy] = pixelColor.B;
colorB[dx 1, dy] = pixelColor.B;
colorB[dx, dy 1] = pixelColor.B;
colorB[dx 1, dy 1] = pixelColor.B;
}
}
for (int y = 0; y < (bmpHeight*2); y )
{
for (int x = 0; x < (bmpWidth*2); x )
{
Color mySpecialColor = Color.FromArgb(colorR[x, y], colorG[x, y], colorB[x, y]);
SolidBrush pixelBrush = new SolidBrush(mySpecialColor);
g.FillRectangle(pixelBrush, x, y, 1, 1);
}
}
Комментарии:
1. Gerax, в StackOverflow копирование ответов других людей обычно не одобряется.
2. Почему ? Я не сделал ничего плохого. Я пишу окончательный код, чтобы кто-то мог получить помощь через Google. И я могу написать этот код благодаря @Mike Nakis . Вы можете прочитать наши обсуждения. Кроме того, это код решения, верно? Как это возможно написать по-другому? Я писал с использованием циклов for, но с той же логикой. Даже я напишу пересмотренное решение здесь, чтобы все могли видеть. Но в одном вы правы, я должен написать «Майк Накис» в своем ответе, но в любом случае я слишком много говорил. Хорошего дня 🙂
Ответ №4:
Вы можете использовать циклы for для цветных [dx, dy] частей.Здесь это для 8-кратного увеличения.
int bmpHeight = pictureBox1.Image.Height;
int bmpWidth = pictureBox1.Image.Width;
Bitmap bmpFirst = (Bitmap)pictureBox1.Image.Clone();
Graphics g = panel3.CreateGraphics();
int[,] colorR = new int[bmpHeight * 8, bmpWidth * 8];
int[,] colorG = new int[bmpHeight * 8, bmpWidth * 8];
int[,] colorB = new int[bmpHeight * 8, bmpWidth * 8];
for (int y = 0; y < bmpHeight; y )
{
for (int x = 0; x < bmpWidth; x )
{
Color pixelColor = bmpFirst.GetPixel(x, y);
int dx = x * 8;
int dy = y * 8;
for (int i = 0; i < 8; i )
{
for (int j = 0; j < 8; j )
{
colorR[dx j, dy i] = pixelColor.R;
colorG[dx j, dy i] = pixelColor.G;
colorB[dx j, dy i] = pixelColor.B;
}
}
}
Ответ №5:
Полный код (также вы можете скачать project: Link
private void button4_Click(object sender, EventArgs e )
{
tabControl1.SelectedTab = tabPage1;
using (OpenFileDialog dlg = new OpenFileDialog())
{
dlg.Title = "Open Image";
dlg.Filter = "*.bmp|*.bmp|*.jpg|*.jpg|*.*|*.*";
if (dlg.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = new Bitmap(dlg.FileName);
}
}
if (pictureBox1.Image == null)
{
MessageBox.Show("Please choose a image file.");
}
else
{
int bmpHeight = pictureBox1.Image.Height;
int bmpWidth = pictureBox1.Image.Width;
if (bmpHeight > 100 || bmpWidth > 100)
{
MessageBox.Show("Image size can't be bigger than 100x100 pixels");
button1.Enabled = false;
button2.Enabled = false;
button3.Enabled = false;
button5.Enabled = false;
button6.Enabled = false;
button7.Enabled = false;
button10.Enabled = false;
}
else
{
button1.Enabled = true;
button2.Enabled = true;
button3.Enabled = true;
button5.Enabled = false;
button6.Enabled = false;
button7.Enabled = false;
button10.Enabled = false;
}
}
}
private void button1_Click(object sender, EventArgs e)
{
tabControl1.SelectedTab = tabPage1;
tabControl1.SelectedTab = tabPage2;
int bmpHeight = pictureBox1.Image.Height;
int bmpWidth = pictureBox1.Image.Width;
Bitmap bmpFirst = (Bitmap)pictureBox1.Image.Clone();
Graphics g = panel1.CreateGraphics();
int[,] colorR = new int[bmpWidth * 2 , bmpHeight *2];
int[,] colorG = new int[bmpWidth * 2 , bmpHeight *2];
int[,] colorB = new int[bmpWidth * 2 , bmpHeight *2];
for (int y = 0; y < bmpHeight; y )
{
for (int x = 0; x < bmpWidth; x )
{
Color pixelColor = bmpFirst.GetPixel(x, y);
int dx = x * 2;
int dy = y * 2;
for (int i = 0; i < 2; i )
{
for (int j = 0; j < 2; j )
{
colorR[dx i, dy j] = pixelColor.R;
colorG[dx i, dy j] = pixelColor.G;
colorB[dx i, dy j] = pixelColor.B;
}
}
}
}
for (int y = 0; y < (bmpHeight*2); y )
{
for (int x = 0; x < (bmpWidth*2); x )
{
Color mySpecialColor = Color.FromArgb(colorR[x, y], colorG[x, y], colorB[x, y]);
SolidBrush pixelBrush = new SolidBrush(mySpecialColor);
g.FillRectangle(pixelBrush, x, y, 1, 1);
}
}
}
private void button5_Click(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
tabControl1.SelectedTab = tabPage1;
tabControl1.SelectedTab = tabPage3;
int bmpHeight = pictureBox1.Image.Height;
int bmpWidth = pictureBox1.Image.Width;
Bitmap bmpFirst = (Bitmap)pictureBox1.Image.Clone();
Graphics g = panel2.CreateGraphics();
int[,] colorR = new int[bmpWidth * 4, bmpHeight * 4];
int[,] colorG = new int[bmpWidth * 4, bmpHeight * 4];
int[,] colorB = new int[bmpWidth * 4, bmpHeight * 4];
for (int y = 0; y < bmpHeight; y )
{
for (int x = 0; x < bmpWidth; x )
{
Color pixelColor = bmpFirst.GetPixel(x, y);
int dx = x * 4;
int dy = y * 4;
for (int i = 0; i < 4; i )
{
for (int j = 0; j < 4; j )
{
colorR[dx i, dy j] = pixelColor.R;
colorG[dx i, dy j] = pixelColor.G;
colorB[dx i, dy j] = pixelColor.B;
}
}
}
}
for (int y = 0; y < (bmpHeight * 4); y )
{
for (int x = 0; x < (bmpWidth * 4); x )
{
Color mySpecialColor = Color.FromArgb(colorR[x, y], colorG[x, y], colorB[x, y]);
SolidBrush pixelBrush = new SolidBrush(mySpecialColor);
g.FillRectangle(pixelBrush, x, y, 1, 1);
}
}
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}
private void button5_Click_1(object sender, EventArgs e)
{
}
private void tabPage2_Click(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)
{
tabControl1.SelectedTab = tabPage1;
tabControl1.SelectedTab = tabPage4;
int bmpHeight = pictureBox1.Image.Height;
int bmpWidth = pictureBox1.Image.Width;
Bitmap bmpFirst = (Bitmap)pictureBox1.Image.Clone();
Graphics g = panel3.CreateGraphics();
int[,] colorR = new int[bmpWidth * 8, bmpHeight * 8];
int[,] colorG = new int[bmpWidth * 8, bmpHeight * 8];
int[,] colorB = new int[bmpWidth * 8, bmpHeight * 8];
for (int y = 0; y < bmpHeight; y )
{
for (int x = 0; x < bmpWidth; x )
{
Color pixelColor = bmpFirst.GetPixel(x, y);
int dx = x * 8;
int dy = y * 8;
for (int i = 0; i < 8; i )
{
for (int j = 0; j < 8; j )
{
colorR[dx i, dy j] = pixelColor.R;
colorG[dx i, dy j] = pixelColor.G;
colorB[dx i, dy j] = pixelColor.B;
}
}
}
}
for (int y = 0; y < (bmpHeight * 8); y )
{
for (int x = 0; x < (bmpWidth * 8); x )
{
Color mySpecialColor = Color.FromArgb(colorR[x, y], colorG[x, y], colorB[x, y]);
SolidBrush pixelBrush = new SolidBrush(mySpecialColor);
g.FillRectangle(pixelBrush, x, y, 1, 1);
}
}
}
private void button5_Click_2(object sender, EventArgs e)
{
tabControl1.SelectedTab = tabPage1;
tabControl1.SelectedTab = tabPage5;
int bmpHeight = pictureBox1.Image.Height;
int bmpWidth = pictureBox1.Image.Width;
Bitmap bmpFirst = (Bitmap)pictureBox1.Image.Clone();
Graphics g = panel4.CreateGraphics();
int[,] colorR = new int[bmpWidth, bmpHeight];
int[,] colorG = new int[bmpWidth, bmpHeight];
int[,] colorB = new int[bmpWidth, bmpHeight];
for (int y = 0; y < bmpHeight; y )
{
for (int x = 0; x < bmpWidth; x )
{
Color pixelColor = bmpFirst.GetPixel(x, y);
colorR[x, y] = pixelColor.R;
colorG[x, y] = pixelColor.G;
colorB[x, y] = pixelColor.B;
}
}
int[,] colorSR = new int[bmpWidth /2, bmpHeight /2];
int[,] colorSG = new int[bmpWidth /2, bmpHeight /2];
int[,] colorSB = new int[bmpWidth /2, bmpHeight /2];
for (int i = 0; i < bmpWidth / 2; i )
{
for (int j = 0; j < bmpHeight /2; j )
{
colorSR[i, j] = (colorR[2 * i, 2 * j] colorR[2 * i, 2 * j 1] colorR[2 * i 1, 2 * j] colorR[2 * i 1, 2 * j 1]) / 4;
colorSG[i, j] = (colorG[2 * i, 2 * j] colorG[2 * i, 2 * j 1] colorG[2 * i 1, 2 * j] colorG[2 * i 1, 2 * j 1]) / 4;
colorSB[i, j] = (colorB[2 * i, 2 * j] colorB[2 * i, 2 * j 1] colorB[2 * i 1, 2 * j] colorB[2 * i 1, 2 * j 1]) / 4;
}
}
for (int y = 0; y < (bmpHeight / 2); y )
{
for (int x = 0; x < (bmpWidth / 2); x )
{
Color mySpecialColor = Color.FromArgb(colorSR[x, y], colorSG[x, y], colorSB[x, y]);
SolidBrush pixelBrush = new SolidBrush(mySpecialColor);
g.FillRectangle(pixelBrush, x, y, 1, 1);
}
}
}
private void groupBox1_Enter(object sender, EventArgs e)
{
}
private void button6_Click(object sender, EventArgs e)
{
tabControl1.SelectedTab = tabPage1;
tabControl1.SelectedTab = tabPage6;
int bmpHeight = pictureBox1.Image.Height;
int bmpWidth = pictureBox1.Image.Width;
Bitmap bmpFirst = (Bitmap)pictureBox1.Image.Clone();
Graphics g = panel5.CreateGraphics();
int[,] colorR = new int[bmpWidth, bmpHeight];
int[,] colorG = new int[bmpWidth, bmpHeight];
int[,] colorB = new int[bmpWidth, bmpHeight];
for (int y = 0; y < bmpHeight; y )
{
for (int x = 0; x < bmpWidth; x )
{
Color pixelColor = bmpFirst.GetPixel(x, y);
colorR[x, y] = pixelColor.R;
colorG[x, y] = pixelColor.G;
colorB[x, y] = pixelColor.B;
}
}
int[,] colorSR = new int[bmpWidth / 4, bmpHeight / 4];
int[,] colorSG = new int[bmpWidth / 4, bmpHeight / 4];
int[,] colorSB = new int[bmpWidth / 4, bmpHeight / 4];
for (int i = 0; i < bmpWidth / 4; i )
{
for (int j = 0; j < bmpHeight / 4; j )
{
colorSR[i, j] = (colorR[4 * i, 4 * j] colorR[4 * i, 4 * j 1] colorR[4 * i 1, 4 * j] colorR[4 * i 1, 4 * j 1]) / 4;
colorSG[i, j] = (colorG[4 * i, 4 * j] colorG[4 * i, 4 * j 1] colorG[4 * i 1, 4 * j] colorG[4 * i 1, 4 * j 1]) / 4;
colorSB[i, j] = (colorB[4 * i, 4 * j] colorB[4 * i, 4 * j 1] colorB[4 * i 1, 4 * j] colorB[4 * i 1, 4 * j 1]) / 4;
}
}
for (int y = 0; y < (bmpHeight / 4); y )
{
for (int x = 0; x < (bmpWidth / 4); x )
{
Color mySpecialColor = Color.FromArgb(colorSR[x, y], colorSG[x, y], colorSB[x, y]);
SolidBrush pixelBrush = new SolidBrush(mySpecialColor);
g.FillRectangle(pixelBrush, x, y, 1, 1);
}
}
}
private void button7_Click(object sender, EventArgs e)
{
tabControl1.SelectedTab = tabPage1;
tabControl1.SelectedTab = tabPage7;
int bmpHeight = pictureBox1.Image.Height;
int bmpWidth = pictureBox1.Image.Width;
Bitmap bmpFirst = (Bitmap)pictureBox1.Image.Clone();
Graphics g = panel6.CreateGraphics();
int[,] colorR = new int[bmpWidth, bmpHeight];
int[,] colorG = new int[bmpWidth, bmpHeight];
int[,] colorB = new int[bmpWidth, bmpHeight];
for (int y = 0; y < bmpHeight; y )
{
for (int x = 0; x < bmpWidth; x )
{
Color pixelColor = bmpFirst.GetPixel(x, y);
colorR[x, y] = pixelColor.R;
colorG[x, y] = pixelColor.G;
colorB[x, y] = pixelColor.B;
}
}
int[,] colorSR = new int[bmpWidth / 8, bmpHeight / 8];
int[,] colorSG = new int[bmpWidth / 8, bmpHeight / 8];
int[,] colorSB = new int[bmpWidth / 8, bmpHeight / 8];
for (int i = 0; i < bmpWidth / 8; i )
{
for (int j = 0; j < bmpHeight / 8; j )
{
colorSR[i, j] = (colorR[8 * i, 8 * j] colorR[8 * i, 8 * j 1] colorR[8 * i 1, 8 * j] colorR[8 * i 1, 8 * j 1]) / 4;
colorSG[i, j] = (colorG[8 * i, 8 * j] colorG[8 * i, 8 * j 1] colorG[8 * i 1, 8 * j] colorG[8 * i 1, 8 * j 1]) / 4;
colorSB[i, j] = (colorB[8 * i, 8 * j] colorB[8 * i, 8 * j 1] colorB[8 * i 1, 8 * j] colorB[8 * i 1, 8 * j 1]) / 4;
}
}
for (int y = 0; y < (bmpHeight / 8); y )
{
for (int x = 0; x < (bmpWidth / 8); x )
{
Color mySpecialColor = Color.FromArgb(colorSR[x, y], colorSG[x, y], colorSB[x, y]);
SolidBrush pixelBrush = new SolidBrush(mySpecialColor);
g.FillRectangle(pixelBrush, x, y, 1, 1);
}
}
}
private void button8_Click(object sender, EventArgs e)
{
tabControl1.SelectedTab = tabPage1;
using (OpenFileDialog dlg = new OpenFileDialog())
{
dlg.Title = "Open Image";
dlg.Filter = "*.bmp|*.bmp|*.jpg|*.jpg|*.*|*.*";
if (dlg.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = new Bitmap(dlg.FileName);
}
}
if (pictureBox1.Image == null)
{
MessageBox.Show("Please choose a image file.");
}
else
{
int bmpHeight = pictureBox1.Image.Height;
int bmpWidth = pictureBox1.Image.Width;
if (bmpHeight > 800 || bmpWidth > 800)
{
MessageBox.Show("Image size can't be bigger than 800x800 pixels.");
button1.Enabled = false;
button2.Enabled = false;
button3.Enabled = false;
button5.Enabled = false;
button6.Enabled = false;
button7.Enabled = false;
button10.Enabled = false;
}
else
{
button1.Enabled = false;
button2.Enabled = false;
button3.Enabled = false;
button5.Enabled = true;
button6.Enabled = true;
button7.Enabled = true;
button10.Enabled = false;
}
}
}
private void groupBox2_Enter(object sender, EventArgs e)
{
}
private void button10_Click(object sender, EventArgs e)
{
tabControl1.SelectedTab = tabPage1;
tabControl1.SelectedTab = tabPage8;
int bmpHeight = pictureBox1.Image.Height;
int bmpWidth = pictureBox1.Image.Width;
Bitmap bmpFirst = (Bitmap)pictureBox1.Image.Clone();
Graphics g = panel7.CreateGraphics();
int[,] colorR = new int[bmpWidth, bmpHeight];
int[,] colorG = new int[bmpWidth, bmpHeight];
int[,] colorB = new int[bmpWidth, bmpHeight];
for (int y = 0; y < bmpHeight; y )
{
for (int x = 0; x < bmpWidth; x )
{
Color pixelColor = bmpFirst.GetPixel(x, y);
colorR[x, y] = pixelColor.R;
colorG[x, y] = pixelColor.G;
colorB[x, y] = pixelColor.B;
}
}
for (int y = 0; y < bmpHeight; y )
{
for (int x = 0; x < bmpWidth; x )
{
int dx = bmpWidth - 1;
int dy = bmpHeight - 1;
Color mySpecialColor = Color.FromArgb(colorR[dx - x, dy - y], colorG[dx - x, dy - y], colorB[dx - x, dy - y]);
SolidBrush pixelBrush = new SolidBrush(mySpecialColor);
g.FillRectangle(pixelBrush, x, y, 1, 1);
}
}
}
private void button9_Click(object sender, EventArgs e)
{
tabControl1.SelectedTab = tabPage1;
using (OpenFileDialog dlg = new OpenFileDialog())
{
dlg.Title = "Open Image";
dlg.Filter = "*.bmp|*.bmp|*.jpg|*.jpg|*.*|*.*";
if (dlg.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = new Bitmap(dlg.FileName);
}
}
if (pictureBox1.Image == null)
{
MessageBox.Show("Please choose a image file.");
}
else
{
int bmpHeight = pictureBox1.Image.Height;
int bmpWidth = pictureBox1.Image.Width;
if (bmpHeight > 800 || bmpWidth > 800)
{
MessageBox.Show("Image size can't be bigger than 800x800 pixels");
button1.Enabled = false;
button2.Enabled = false;
button3.Enabled = false;
button5.Enabled = false;
button6.Enabled = false;
button7.Enabled = false;
button10.Enabled = false;
}
else
{
button1.Enabled = false;
button2.Enabled = false;
button3.Enabled = false;
button5.Enabled = false;
button6.Enabled = false;
button7.Enabled = false;
button10.Enabled = true;
}
}
}
}