Академический Документы
Профессиональный Документы
Культура Документы
showtopic=30381
class SaveImage {
/// <summary>
/// Imagen que contiene la clase
/// </summary>
public Image Tmp; // referencia a la imagen del Picturebox
Asociado
Form Ref; // referencia que necesitare a este formulario
Form Opciones;
GroupBox Gr;
RadioButton R1;
RadioButton R2;
RadioButton R3;
TextBox Porciento;
TextBox Larg; // Objetos necesarios para formar el
di�logo
TextBox Anch;
Label L1;
Label L2;
Button Acepta;
Button Cancelar;
SaveFileDialog Sv;
DialogResult rs;
/// <summary>
/// Constructor de clase SaveImage
/// </summary>
/// <param name="imagen">Imagen que se va a guardar</param>
/// <param name="Interfaz"> Si se mostrar� Interfaz</param>
public SaveImage(Image imagen, bool Interfaz) {
R2 = new RadioButton();
R2.CheckedChanged += new
EventHandler(R2_CheckedChanged);
R2.Text="Reducir tama�o al";
R2.Width = 115; // Configuracion
R2.Height = 17;
R2.Location= new Point(18,48);
Gr.Controls.Add(R2);
Gr.Controls.Add(Porciento);
L1 = new Label();
L1.Text="%";
L1.AutoSize=true;
L1.Location= new Point(195,50);
Gr.Controls.Add(L1);
R3 = new RadioButton();
R3.CheckedChanged += new
EventHandler(R3_CheckedChanged);
R3.Text="Cambiar tama�o a"; // Configuracion
R3.Width=113;
R3.Height=17;
R3.Location= new Point(18,71);
Gr.Controls.Add(R3);
L2 = new Label();
L2.Text="X";
L2.AutoSize=true;
L2.Location=new Point(195,75);
Gr.Controls.Add(L2);
Larg= new TextBox();
Larg.Enabled=false;
Larg.Width=37;
Larg.Height=20;
Larg.MaxLength=4;
Larg.TextAlign=HorizontalAlignment.Center;
Larg.Location= new Point(147,71);
Gr.Controls.Add(Larg);
/// <summary>
/// Constructor de la clase SaveImage sin Interfaz
/// </summary>
/// <param name="imagen">Imagen a Guardar</param>
public SaveImage(Image imagen) {
Tmp = imagen; // Asigno la imagen...
}
if (R2.Checked)
{Tmp=Resize(Tmp,Convert.ToInt32(Porciento.Text));}
if (R3.Checked)
{Tmp=Resize(Tmp,Convert.ToInt32(Larg.Text),Convert.ToInt32(Anch.Text)); }
Sv= new SaveFileDialog(); // Creo un di�logo
para salvar la imagen
Sv.Title = "Guardar imagen como..."; // Lo
configuro
Sv.Filter = "Archivo JPG|*.jpg|Archivo PNG|
*.png|Archivo GIF|*.gif|Mapa de Bits|*.bmp";
rs = Sv.ShowDialog(); // Lo muestro modal
if (rs == DialogResult.OK) {
switch (x)
{
// Salvo la imagen en el formato deseado
case 1:
Tmp.Save(Sv.FileName,
ImageFormat.Jpeg);
break;
case 2:
Tmp.Save(Sv.FileName,
ImageFormat.Png);
break;
case 3:
Tmp.Save(Sv.FileName,
ImageFormat.Gif);
break;
case 4:
Tmp.Save(Sv.FileName,
ImageFormat.Bmp);
break;
}
Ref.Dispose(); // Cierro el formulario
}
}
else { MessageBox.Show("Al menos debe selecionar
una opci�n","xdevilWebCapture", MessageBoxButtons.OK, MessageBoxIcon.Warning); }
catch {
MessageBox.Show("Introduzca valores v�lidos",
"xdevilWebCapture", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
void Cancelar_Click(object sender, EventArgs e)
{
Ref.Dispose(); // Cierro el formulario
}
/// <summary>
/// Escala la imagen capturada al % especificado
/// </summary>
/// <param name="foto"> Imagen que se quiere escalar </param>
/// <param name="TantoPorCiento"> Porcentaje de reducci�n</param>
/// <returns>Imagen escalada</returns>
public Image Resize(Image foto,int TantoPorCiento) {
int OrigX=0;
int OrigY=0;
int ResX=0; // Variables referencia para saber donde
empiezo a contar px
int ResY=0;
int ResAncho=(int)(ImgOrAncho*Tporciento);
int ResAlto = (int)(ImgOrAlto * Tporciento); // Obtengo las
dimensiones al % especificado
int OrigX = 0;
int OrigY = 0;
int ResX = 0; // Varables referencia para saber donde
contar px
int ResY = 0;
float Porciento = 0;
float PorcientoAncho = 0; // Porcentajes de sampleo
float PorcientoAlto = 0;
if (ancho >alto) {
AlturaFinal = (int)(ImgOrAlto *
Porciento); }
else {
AlturaFinal =AnchuraFinal;} // Para
proporcionar la imagen
#endregion
#endregion
/// <summary>
/// Crea una instancia de la clase WebCam de Emperorxdevil
/// </summary>
/// <param name="frecuencia">Intervalo de tiempo en el que se capturar�n
las im�genes</param>
/// <param name="pct">PictureBox en el cual se mostrar� lo capturado por la
webcam</param>
/// <param name="cb"> Listbox en el que se mostrar�n las Cams
detectadas</param>
public WebCam(int frecuencia,PictureBox pct, ComboBox cb) {
Frecuencia=frecuencia;
Pbx=pct; // Inicio las variables necesarias
reloj= new Timer(); // Creo el timer
reloj.Tick += new EventHandler(reloj_Tick); // Le asigno el controlador
bool valor;
string nombre;
string version;
int x=0;
do {
nombre="Dispositivo"+x.ToString();
valor=capGetDriverDescriptionA(x,nombre,100,"v1",100);
if (valor) Cbx.Items.Add(nombre);
x=x+1;
} while (!valor==false);
}
/// <summary>
/// La WebCam se Encender� y mostrar� lo capturado en el PictureBox
referenciado
/// </summary>
/// <param name="Dispositivo">N� de dispositivo del Combobox</param>
try {
catch (Exception e) {
MessageBox.Show("No se puede Iniciar la
WebCam","Error");
}
}
/// <summary>
/// Detiene la captura de im�genes y apaga la WebCam
/// </summary>
public void StopCaptura() {
try {
reloj.Stop(); // Paro el reloj que captura
SendMessage(CamHandle, WM_CAP_DISCONNECT, 0, 0); //
Apago la cam
EmptyClipboard(); // Vac�o el portapapeles
}
}
/// <summary>
/// Muestra diferentes parametros configurables de la imagen que se va a
guardar
/// </summary>
public void GuardarImagen() {