CLR: .Net / Mono / Boo / Otros CLR > C#
modificar colores especificos de una pictureBox
Jeysscarr:
Primero que todo las variables enteras R,G,B declaralas a nivel general de la clase como static, inicializalas a 0 en el Form_Load, asignales los valores como estas haciendo en el mouse down, asi podras usarlas en cualquier parte de la aplicacion a nivel del form....
No lo hagas en el mouse move porque jeje cuando quieras ir con el mouse a darle click al button4 pues obviamente se te van a perder los valores RGB, por eso guardalas en el mousedown...
computadora:
muchisimas gracias de nuevo :)
me surgio otra duda, no hay forma que dentro de donde puse los asteriscos se pueda tener los valores rgb del pixel en el cual esta haciendo el recorido??
algo asi como lo que me mostraste anteriormente
int red = aCambiar.R;
int green = aCambiar.G;
int blue = aCambiar.B;
# for (int i = 10; i <= b.PhysicalDimension .Width-10; i++)
# {
# for (int j = 10; j <= b.PhysicalDimension .Height-10; j++)
# {
# if (b.GetPixel(i, j).ToArgb().Equals (buscado.ToArgb ()))
# {
***********************
# b.SetPixel(i, j, cambio);
#
# }
# }
# }
# pictureBox1.Image = b;
#
gracias nuevamente :)
Jeysscarr:
En programación casi todo se puede hacer... mira cuando yo accedo a la propiedad GetPixel del birmap "b" puedo hacer varias cosas con eso:
1. Asignar su valor a un color (aunque yo directamente lo comparo sin asignarlo)
2. Asignando o no este valor sacar los valores RGB, en ambas formas respectivamente seria asi:
1ª Forma:
Color ColorActualRecorrido=b.Getpixel(i,j).ToArgb();
De aqui puedo hacer esto: ColorActualRecorrido.R, ColorActualRecorrido.G, ColorActualRecorrido.B
2ª Forma:
Hacerlo directamente: b.Getpixel(i,j).ToArgb().R, b.Getpixel(i,j).ToArgb().G, b.Getpixel(i,j).ToArgb().B
en este caso si usamos la primera forma en el caso anterior seria algo como esto:
--- Código: C# --- Color ColorActual=null; for (int i = 10; i <= b.PhysicalDimension .Width-10; i++) { for (int j = 10; j <= b.PhysicalDimension .Height-10; j++) { ColorActual=b.GetPixel(i, j).ToArgb(); R=ColorActual.R;G=ColorActual.G;B=ColorActual.B; if (ColorActual.Equals (buscado.ToArgb ())) { b.SetPixel(i, j, cambio); } } }
computadora:
gracias, eso era lo que buscaba :)
ahora lo que quiero hacer es que todo lo del picturebox le haga una modificacion a sus rojos (rgb)
dejame te explico como lo estoy usando
for (int i = 0; i <= bmp.PhysicalDimension.Width - 1; i++)
{
for (int j = 0; j <= bmp.PhysicalDimension.Height - 1; j++)
{
ColorActual = b.GetPixel(i, j); //guardo los colores que recorro
red1 = ColorActual.R; los pongo en variables
green1 = ColorActual.G;
blue1 = ColorActual.B;
green1 =+1; //modifico solo el verde
cambioV = Color.FromArgb(255,red1, green1, blue1); //lo guardo todo en un nuevo color
b.SetPixel(i, j, cambioV); //lo uso en el picture box
}
}
pero lo que me hace es que, por ejemplo, el color amarillo me lo convierte en rojo y lo blanco a magenta
y el resultado deberia de ser verde amarillesco y tal vez verde palido, que puedo hacer??
muchisimas gracias por todo tu tiempo y perdon por las molestias :hola:
Navegación
[*] Página Anterior
Ir a la versión completa