Domingo 22 de Diciembre de 2024, 15:14
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
CLR: .Net / Mono / Boo / Otros CLR
»
C#
(Moderador:
ProfesorX
) »
modificar colores especificos de una pictureBox
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: modificar colores especificos de una pictureBox (Leído 6827 veces)
computadora
Nuevo Miembro
Mensajes: 11
modificar colores especificos de una pictureBox
«
en:
Viernes 23 de Abril de 2010, 04:18 »
0
lo que quiero es poder modificar los colores ( rojo, azul, verde) de mi picturebox1
especificamente, quiero saber como recorer el picturebox1 para que dentro de su color (RGB) le pueda modificar, por decir el azul y se cambien algunos colores
hasta ahora tengo un radiobutton para cada color, y un combobox que mide el nivel (1-2-3) de cambio a aplicarse pero no puedo avanzar porque no se lo anterior
gracias de antemano
Tweet
Jeysscarr
Miembro MUY activo
Mensajes: 134
Nacionalidad:
Re: modificar colores especificos de una pictureBox
«
Respuesta #1 en:
Viernes 23 de Abril de 2010, 06:09 »
0
Yo hice como un minipromita para ver como se hacia por tu pregunta, y si se puede.... aqui esta mas o menos la idea principal
conviertes la imagen a un bitmap
estableces que color quieres cambiar y determinas que nuevo valor, despues recorres la matriz de pixeles... por eso el nombre "mapa de bits"
con respecto a su tamaño y en donde encuentres coincidencia haces el cambio. Te dejo una imagen de lo que me idee.. espero te sirva
Código: C#
Color buscado
=
<
COLORBUSCADOPARCAMBIAR
>;
Color nuevoColor
=
<
NUEVOCOLOR
>;
Bitmap b
=<
ASIGNACION
>;
for
(
int
i
=
0
;
i
<=
b
.
PhysicalDimension
.
Width
-
1
;
i
++
)
{
for
(
int
j
=
0
;
j
<=
b
.
PhysicalDimension
.
Height
-
1
;
j
++
)
{
if
(
b
.
GetPixel
(
i, j
)
.
ToArgb
(
)
.
Equals
(
buscado
)
)
{
b
.
SetPixel
(
i, j, nuevoColor
)
;
}
}
}
//ya aqui el bitmap es distinto
Este e el cofigo real:
Código: C#
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
;
namespace
ModificarLosColores
{
public
partial
class
Form1
:
Form
{
Bitmap b
=
null
;
public
Form1
(
)
{
InitializeComponent
(
)
;
b
=
(
Bitmap
)
pictureBox1
.
Image
;
}
private
void
pictureBox1_MouseMove
(
object
sender, MouseEventArgs e
)
{
try
{
Color MiColor
=
b
.
GetPixel
(
e
.
X
, e
.
Y
)
;
pictureBox2
.
BackColor
=
MiColor
;
}
catch
{
}
}
private
void
pictureBox1_MouseDown
(
object
sender, MouseEventArgs e
)
{
try
{
Color MiColor
=
b
.
GetPixel
(
e
.
X
, e
.
Y
)
;
pictureBox3
.
BackColor
=
MiColor
;
}
catch
{
}
}
private
void
button1_Click
(
object
sender, EventArgs e
)
{
Color buscado
=
pictureBox3
.
BackColor
;
Color cambio
=
Color
.
FromArgb
(
255
,
(
int
)
numericUpDown1
.
Value
,
(
int
)
numericUpDown2
.
Value
,
(
int
)
numericUpDown3
.
Value
)
;
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
;
}
}
}
El mensaje contiene
2 archivos adjuntos
. Debes
ingresar
o
registrarte
para poder verlos y descargarlos.
Nuestro poder está creciendo mas rápido que nuestra sabiduria
computadora
Nuevo Miembro
Mensajes: 11
Re: modificar colores especificos de una pictureBox
«
Respuesta #2 en:
Viernes 23 de Abril de 2010, 17:01 »
0
muchisimas gracias por tu ayuda, me sirvio mucho
sola una duda, si quisiera guardar en un int diferentes los valores red, green y blue del color seleccionado, como lo podria hacer??
gracias nuevamente
Jeysscarr
Miembro MUY activo
Mensajes: 134
Nacionalidad:
Re: modificar colores especificos de una pictureBox
«
Respuesta #3 en:
Viernes 23 de Abril de 2010, 17:07 »
0
Algo como esto?
Código: C#
int
R
=
Tucolor
.
toArgb
.
R
;
int
G
=
Tucolor
.
toArgb
.
G
;
int
B
=
TUcolor
.
toArgb
.
B
;
Nuestro poder está creciendo mas rápido que nuestra sabiduria
computadora
Nuevo Miembro
Mensajes: 11
Re: modificar colores especificos de una pictureBox
«
Respuesta #4 en:
Viernes 23 de Abril de 2010, 17:32 »
0
gracias, era lo que buscaba
solo que lo que puse es lo siguiente:
int red = aCambiar.R;
int green = aCambiar.G;
int blue = aCambiar.B;
y funciona bien, solo que esto lo puse en un pictureBox1_MouseMove y necesito usar el valor de red en button4_Click
que puedo hacer?
muchisimas gracias
Jeysscarr
Miembro MUY activo
Mensajes: 134
Nacionalidad:
Re: modificar colores especificos de una pictureBox
«
Respuesta #5 en:
Viernes 23 de Abril de 2010, 17:36 »
0
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...
Nuestro poder está creciendo mas rápido que nuestra sabiduria
computadora
Nuevo Miembro
Mensajes: 11
Re: modificar colores especificos de una pictureBox
«
Respuesta #6 en:
Domingo 25 de Abril de 2010, 03:22 »
0
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
Miembro MUY activo
Mensajes: 134
Nacionalidad:
Re: modificar colores especificos de una pictureBox
«
Respuesta #7 en:
Domingo 25 de Abril de 2010, 13:35 »
0
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
)
;
}
}
}
Nuestro poder está creciendo mas rápido que nuestra sabiduria
computadora
Nuevo Miembro
Mensajes: 11
Re: modificar colores especificos de una pictureBox
«
Respuesta #8 en:
Domingo 25 de Abril de 2010, 19:20 »
0
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
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
CLR: .Net / Mono / Boo / Otros CLR
»
C#
(Moderador:
ProfesorX
) »
modificar colores especificos de una pictureBox