• Jueves 18 de Abril de 2024, 11:30

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - kalixe985

Páginas: [1] 2
1
C# / Restringir acceso a recursos locales en Savefiledialog
« en: Martes 3 de Marzo de 2009, 21:58 »
Hola,
A ver si me pueden ayudar jeje. Resulta que en mi empresa hay una aplicación .Net que los usuarios ejecutan remotamente, utilizando el RemoteApps de Terminal Server (el servidor es un Windows server 2008). Ellos abren la página del remoteApps desde el navegador, se loguean con su usuario y luego clickan sobre la aplicación que quieren ejecutar y ésta se abre pero ejecutándose remotamente en el servidor. Al abrir la aplicación remota, no pueden ver ni tocar nada del servidor (Escritorio, Mis documentos, etc...). Hasta aquí todo perfecto. El problema surge cuando los usuarios quieren descargar o subir documentos utilizando la aplicación, que usa el diálogo SaveFileDialog, el cual abre una ventana de diálogo y permite escoger dónde descargar o desde donde subir el archivo.  Cuando un usuario abre este diálogo, puede ver las carpetas locales, el escritorio, mis documentos, c, etc. A mí lo que me gustaría es que estas carpetas no le salieran en el diálogo y sólo pudiera ver una unidad de red, que previamente se habría mapeado.

¿Hay alguna forma de personalizar el SaveFileDialog y quitar los iconos de Escritorio, Mis Documentos, etc y que sólo se pueda acceder a una unidad de red mapeada? He estado investigando pero parece que no es posible. No sé si la propiedad CustomPlaces del SaveFileDialog me podría servir, porque no acabo de entender cómo funciona y para qué sirve.


Muchísimas gracias de antemano.
Gracias y saludos!!!!

2
C# / Re: Generación De Código Xml Desde C#
« en: Miércoles 14 de Mayo de 2008, 23:02 »
Cita de: "ing_marco"
Hola.
Particularmente, yo trabajo con XMLNode, partir de alli creoun xpathnavigator y trabajo con esto.

XmlNode deleteContact = xmlDocument.SelectSingleNode("//Resource[@src='archivo1']");

haber en ese codigo hay 2 cosas que deberias revisar:
1: SelectSingleNode devuelve un xpathnavigator y tu lo estas tratando de asignar a un xmlnode.
2:Te recomiento que pruebes poner la cadena completa.
"Application/Resource[@src='archivo1']"

por lo demas no creo que deberias tener ningun problema.
Si tienes algun problema me lo haces saber por este medio o sino a mi blog.
Ya lo solucioné en su día. Gracias y salu2!!!     ;)

3
C# / Obtener Los Usuarios Que Son Administradores Del E
« en: Jueves 13 de Marzo de 2008, 17:27 »
Hola!!!

Me gustaría saber la forma de obtener los usuarios que son administradores del equipo. Sé comprobar si el usuario que ejecuta la aplicación (usuario actualmente logado) es del grupo administradores, pero también me interesaría obtener los nombres de todos los demás usuarios administradores, si los hay.

Muchísimas gracias de antemano!!!

4
C# / Re: Generación De Código Xml Desde C#
« en: Domingo 6 de Enero de 2008, 02:14 »
Hola de nuevo!!!

Tengo un problema a la hora de eliminar un nodo xml. Resulta que el nodo tiene la siguiente estructura:

<cue use="ButtonHover" begin="class('chapterButton')[state:pointer()=true()]" dur="1f" />

y me gustaría poder eliminarlo según su atributo begin, ya que hay muchos nodos de este tipo y yo sólo quiero eliminar uno en concreto, cada vez que quiera. El problema está en que el contenido del atributo tiene comillas simples ( ' ), lo cual me interfiere a la hora de seleccionar el nodo con una expresión xpath, para luego poder eliminarlo.

He probado con:

Código: Text
  1.  
  2. XmlNode deleteContact = contacto.SelectSingleNode(&#34;//_namespace:cue[@begin='class('chapterButton')[state:pointer()=true()]&#34;, nsmanager);
  3.  
  4. deleteContact.ParentNode.RemoveChild(deleteContact);
  5.  


Pero no me funciona por culpa de las comillas ( ' ). ¿Cómo puedo escoger el nodo entonces, o hay alguna forma de escogerlo con xpath y que no falle por las comillas simples ( ' )?

 

Gracias de antemano y salu2!!!

5
C# / Re: Generación De Código Xml Desde C#
« en: Sábado 29 de Diciembre de 2007, 03:35 »
HOla de nuevo!!!
Vuelvo a tener problemas con las clases de XML en C#.
Resulta que tengo un código XML como el siguiente:
Código: Text
  1. ?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34;?&#62;
  2. &#60;Application xmlns=&#34;http://www.google.com&#34;&#62;
  3.   &#60;Region x=&#34;0&#34; y=&#34;0&#34; width=&#34;1920&#34; height=&#34;1080&#34; /&#62;
  4.   &#60;script src=&#34;archivo1&#34; /&#62;
  5.   &#60;Markup src=&#34;archivo2&#34; /&#62;
  6.   &#60;Resource src=&#34;archivo1&#34; /&#62;
  7.   &#60;Resource src=&#34;archivo2&#34; /&#62;
  8. &#60;/Application&#62;
  9.  

Por mi aplicación, necesito insertar y eliminar nodos del tipo <Resource>, es decir, de los 2 últimos. Para insertar (al final, por ejemplo), no tengo ningún problema ya que puedo clonar alguno de los <Resource>, modificarlo e insertarlo. Mi problema surge a la hora de eliminar un nodo <Resource> según su atributo src. Si utilizo la expresión
Código: Text
  1. XmlNode deleteContact = xmlDocument.SelectSingleNode(&#34;//Resource[@src='archivo1']&#34;);
  2. deleteContact.ParentNode.RemoveChild(deleteContact);
  3.  
Resulta que me sale una NullReferenceException. He descubierto que esto sucede porque el nodo raíz <Application> tiene un namespace xmlns="http://www.google.com". Si quito el namespace y pongo un atributo cualquiera o simplemente dejo el nodo <Application> sin atributos, el código anterior sí que borra correctamente el nodo (en este caso borraría   <Resource src="archivo1" /> ). Para que funcione debo modificar el código XML de esta forma (o dejar <Application> sin atributos):
Código: Text
  1. &#60;?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34;?&#62;
  2. &#60;Application atributo=&#34;http://www.google.com&#34;&#62;
  3.   &#60;Region x=&#34;0&#34; y=&#34;0&#34; width=&#34;1920&#34; height=&#34;1080&#34; /&#62;
  4.   &#60;script src=&#34;archivo1&#34; /&#62;
  5.   &#60;Markup src=&#34;archivo2&#34; /&#62;
  6.   &#60;Resource src=&#34;archivo1&#34; /&#62;
  7.   &#60;Resource src=&#34;archivo2&#34; /&#62;
  8. &#60;/Application&#62;
  9.  


¿Cómo puedo borrar nodos si el nodo raíz tiene un namespace? Por cierto y dicho sea de paso, el código XML del principio lo cargo desde una plantilla, con lo cual no he creado el namespace yo mediante código.


Otra cosa que me gustaría saber es si hay alguna forma de cambiarle el nombre a un nodo (pasar de un nodo <nombre1 ... ... /> a tener un nodo <nombre2 ... ... />), sin tener que crear un nodo nuevo, simplemente modificando un nodo ya existente.
Lo mismo me gustaría hacerlo con los nombres de atributos. En resumen, si tengo:
Código: Text
  1. &#60;Resource src=&#34;archivo1&#34; /&#62;
  2.  
 me gustaría obtener, modificando este nodo, el nodo
Código: Text
  1. &#60;Pepito atributo=&#34;valorCualquiera&#34; /&#62;
  2.  



A ver si me podéis echar una manito.
Gracias de antemano y salu2!!!!!

6
C# / Re: Generación De Código Xml Desde C#
« en: Lunes 17 de Diciembre de 2007, 23:21 »
Hola de nuevo!!!
Resulta que el código XML que debo generar debe cumplir un schema existente. En este punto necesitaria dos cosas:
  • Que se compruebe si el codigo que voy generando cumple ese schema existente. ¿Cómo podría comprobarlo?</li>
  • Que los elementos que inserte sean de la forma <Elemento atributo1="valor" atributo2="valor" /> y no de la forma  <Elemento atributo1="valor" atributo2="valor"></Elemento> ¿Hay alguna función que inserte un elemento con la anterior forma o algún método que me permita crear un elemento a partir de un string, en el que habría una cadena con un elemento con la forma descrita anteriormente?</li>
  • Si tengo un XmlNode, me interesaría poder modificar los valores de sus atributos e insertar nuevos atributos. Por ejemplo, si tengo el nodo   <Elemento atributo="valor" atributo2="valor2" />, me interesaría poder obtener   <Elemento atributo="NuevoValor" atributo2="NuevoValor2" atributoNuevo="nuevo" /> .</li>
A ver si me pueden ayudar.
Gracias y salu2!!!!

7
C# / Re: Generación De Código Xml Desde C#
« en: Lunes 17 de Diciembre de 2007, 00:41 »
Creo que optaré por XmlDocument y XpathNavigator. Me pondré a estudiar estas clases y ya iré comentando si tengo problemas.
Gracias y salu2!!!!

8
C# / Generación De Código Xml Desde C#
« en: Domingo 16 de Diciembre de 2007, 02:53 »
Hola!!!
Resulta que estoy haciendo una aplicación en C# (Windows Forms) que tiene que generar varios archivos con código XML. Por ejemplo, uno de los archivos generados podría tener la misma estructura que el siguiente:

Código: Text
  1. &#60;?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34;?&#62;
  2. &#60;Application xmlns=&#34;http://www.dvdforum.org/2005/HDDVDVideo/Manifest&#34;&#62;
  3.     &#60;Region x=&#34;0&#34; y=&#34;0&#34; width=&#34;1920&#34; height=&#34;1080&#34; /&#62;
  4.     &#60;script src=&#34;file:///dvddisc/ADV_OBJ/main.js&#34; /&#62;
  5.     &#60;Markup src=&#34;file:///dvddisc/ADV_OBJ/main.xmu&#34; /&#62;
  6.     &#60;Resource src=&#34;file:///dvddisc/ADV_OBJ/main.js&#34; /&#62;
  7.     &#60;Resource src=&#34;file:///dvddisc/ADV_OBJ/main.xmu&#34; /&#62;
  8.     &#60;Resource src=&#34;file:///dvddisc/ADV_OBJ/chapter1____e.png&#34; /&#62;
  9.     &#60;Resource src=&#34;file:///dvddisc/ADV_OBJ/chapter1_f__e.png&#34; /&#62;
  10.     &#60;Resource src=&#34;file:///dvddisc/ADV_OBJ/chapter1of__e.png&#34; /&#62;
  11.     &#60;Resource src=&#34;file:///dvddisc/ADV_OBJ/chapter2____e.png&#34; /&#62;
  12.     &#60;Resource src=&#34;file:///dvddisc/ADV_OBJ/chapter2_f__e.png&#34; /&#62;
  13.     &#60;Resource src=&#34;file:///dvddisc/ADV_OBJ/chapter2of__e.png&#34; /&#62;
  14.     &#60;Resource src=&#34;file:///dvddisc/ADV_OBJ/chapter3____e.png&#34; /&#62;
  15.     &#60;Resource src=&#34;file:///dvddisc/ADV_OBJ/chapter3_f__e.png&#34; /&#62;
  16.     &#60;Resource src=&#34;file:///dvddisc/ADV_OBJ/chapter3of__e.png&#34; /&#62;
  17. &#60;/Application&#62;
  18.  
A medida que avanzo, poco a poco voy conociendo las clases XML de C# y familiarizándome con ellas.
Mi aplicación tiene que funcionar como proyectos, de tal forma que  el usuario pueda guardar el código que ha generado y la siguiente vez que abra la aplicación, se cargue el último código XML que el usuario creó, para poder seguir modificándolo, añadiéndole o quitándole elementos.
En lo que se refiere a generar la líneas de código XML en un fichero, lo sé hacer, con la clase XmlTextWriter. Lo que necesito es saber si hay alguna forma de ir generando el código, por ejemplo en un stream, y cuando el usuario Guarde los cambios, entonces ese código generado se escriba persistentemente en un archivo XML. Con esto lo que quiero conseguir es que sólo se escriba el código generado en el archivo XML cuando el usuario guarde, y no antes. Creo que esta forma es mejor, ya que si fuera leyendo  y escribiendo  el archivo XML, a medida que se fuera modificando,  sería menos eficiente (lecturas y escrituras continuas de un mismo fichero XML) y menos práctico. ¿Qué opináis? ¿Se podría hacer de otra manera? Acepto consejos. También he pensado utilizar archivos temporales XML. ¿Me lo recomendáis? ¿Cómo me aconsejaríais que hiciera lo que quiero conseguir?

Por otra parte, ¿Hay algún método y/o clase que permita buscar elementos en un archivo XML, modificarlos, borrarlos o crear nuevos, indistintamente de la línea en que se encuentren? Me explico, por ejemplo, en el ejemplo de código que he puesto, me interesaría poder borrar un elemento Resource, según su atributo src, por ejemplo, o modificar este elemento Resource o crear uno nuevo, etc...; me interesaría, por ejemplo, modificar, eliminar o volver a crear un elemento Region también...
Querría hacer lo anterior con todos los demás elementos (Region, Script, Markup, etc...): poderlos crear nuevos, borrarlos o modificarlos. ¿Cómo podría hacer esto?

Perdón por todas la dudas que planteo y por mi ignorancia. De antemano agradezco cualquier enlace a tutoriales, etc de XML con C#.

A ver si alguien me puede ayudar, gracias y salu2!!!!!

9
C# / Re: Guardar Bitmaps Con Contraste U Opacidad
« en: Viernes 14 de Diciembre de 2007, 17:55 »
Hola!!!
Al final he encontrado una forma de hacerlo:

" Lo que estas buscando son las matrices de transformación de color, estas matrices te permiten trasladar o escalar la información de color de una imagen.

Una matriz de transformación esta compuesta de una matriz de 5x5 puntos definidos como floats, siendo su distribución esta:


Código: Text
  1. float[][] colorMatrixPoints = new float[][] {
  2.  
  3.                 new float[]{r,  0,   0,   0,  0},
  4.                 new float[]{0,  g,   0,  0,  0},
  5.                 new float[]{0,  0,   b,  0,  0},
  6.                 new float[]{0,  0,   0,  a,  0},
  7.                 new float[]{t1, t2, t3, t4, 1}
  8.  
  9.             };
  10.  


Los valores r,g,b y a son los multiplicadores de color que nos permiten escalar los colores, por ejemplo, si ponemos 0.5 en el canal r y aplicamos la matriz sobre una imagen con un valor de rojo de 0.2 esta se nos quedaría en 0.1 (los colores pueden valer entre 0 y 1 en vez de entre 0 y 255).

Los valores t1 a t4 son los valores de translación de color, en vez de multiplicar la información por el valor, este se suma al valor actual del canal especificado (t1=r, t2=g...).

Como puedes ver, cambiando los valores de r g y b haces un cambio de contraste, mientras que con t1, t2 y t3 cambias el brillo.

Una vez creada la matriz con los puntos creamos la matriz en sí y se la asignamos a un ImageAttributes que posteriormente usaremos para dibujar la imagen con los nuevos valores:


Código: Text
  1.     ColorMatrix cm = new ColorMatrix(colorMatrixPoints);
  2.     ImageAttributes imgAttr = new ImageAttributes();
  3.     imgAttr.SetColorMatrix(cm);
  4.  

Ahora solo nos queda dibujar la imagen original en una nueva imagen aplicandole el ImageAttributes que hemos creado previamente:


Código: Text
  1.  //Se supone que la imagen original está cargada en un Bitmap llamado Source
  2.     Bitmap bmpdest = new Bitmap(Source.Width, Source.Height, Source.PixelFormat);
  3.     Graphics g = Graphics.FromImage(bmpdest);
  4.     g.DrawImage(Source, new Rectangle(Point.Empty, bmpdest.Size), 0, 0, Source.Width, Source.Height, GraphicsUnit.Pixel, imgAttr);
  5.     g.Dispose();
  6.     imgAttr.Dispose();
  7.  

Y con esto ya tienes tu imagen lista para salvar con el contraste y el brillo modificado.
DR GUSMAN.  "


Gracias y saludos!!!

10
C# / Re: Guardar Bitmaps Con Contraste U Opacidad
« en: Jueves 13 de Diciembre de 2007, 11:21 »
Cita de: "JuanK"
edita la imagen en una app externa
crea las dos imagenes y lueo por codigo alternas las imagenes en el boton...
no es necesario que te compliques aplicando tu mismo... por codigo el contraste a la imagen...
Hola!!!
Tiene que ser mi aplicación quien lo haga. De todas formas, como veo que es complicado hacerlo, es posible que no lo haga o que busque otra solución.
Gracias y saludes!!!

11
C# / Guardar Bitmaps Con Contraste U Opacidad
« en: Miércoles 12 de Diciembre de 2007, 01:29 »
Hola!!!!
Me gustaría saber si en C# hay alguna forma de guardar los Bitmaps, pero añadiendoles o quitándoles contraste o añadiendoles o quitandoles opacidad. Concretamente, lo que quiero es guardar 2 versiones de una misma imagen, una normal y otra con más contraste (más luminosa), para luego utilizar estas 2 imágenes en un botón una aplicación fuera de C#. La imagen normal sería la que aparecería cunado el botón está en estado normal y la imagen con contraste sería la que aparecería cuando hago click o MouseHover, por ejemplo.
He mirado si existe una propiedad Opacity para los Bitmap o los Image, pero me parece que no hay.

A ver si alguien me puede ayudar, gracias de antemano!!!!
Salu2!!!

12
C# / Re: Guardar Pictureboxes(creados En Tiempo D Ejecución
« en: Jueves 29 de Noviembre de 2007, 13:06 »
Hola!!!
Gracias por tu respuesta.
No sabía qué era esto de la serialización y ahora que sé cómo funciona, creo que me va a ser muy útil.
Al final, como lo que necesito de cada pictureBox que se va creando es su Location, Size e Image, me he creado una clase auxiliar "Boton", que tiene como atributos estos valores. A medida que vaya creando pictureBoxes, iré creando objetos de la clase Boton, y estos objetos los meteré en un Diccionario o en una Lista de botones. Cuando guarde los cambios hechos en la aplicación, serializaré binariamente los botones que haya en la lista o diccionario y los guardaré en un fichero .bin. Cuando vuelva a abrir la aplicación y quiera recuperar los pictureBoxes creados con anterioridad, deserializaré los objetos Boton del archivo .bin e iré reconstruyendo y dibujando de nuevo los pictureBoxes.

Me pondré con ello a ver si lo consigo. Si tengo algún problema te digo algo.
Gracias por tu ayuda!!!!

13
C# / Guardar Pictureboxes(creados En Tiempo D Ejecución
« en: Martes 27 de Noviembre de 2007, 23:33 »
Hola!!!!
Resulta qu estoy haciendo una aplicación en la cual hay un pictureBox principal (grande, casi ocupa toda la pantalla), en el cual voy seleccionando trozos de éste mediante los eventos MouseDown, MouseUp y MouseMove. Al seleccionar un trozo, se crea un pictureBox del tamaño de ese trozo (en tiempo de ejecución, no en compilación), en su misma ubicación y tamaño y su Image es la del trozo seleccionado. Mi aplicación debe funcionar como proyectos, que puedo cerrar y luego volver a abrir posteriormente, con la misma información. Concretamente, lo que me interesaría es poder guardar de forma permanente (en disco, por ejemplo) los pictureBoxes que voy creando en tiempo de ejecución, para luego poder recuperarlos y dibujarlos cuando vuelva a abrir ese proyecto en concreto con la aplicación.
A ver si alguien me puede echar una mano.
Gracias de antemano!!!!

14
C# / Re: Seleccionar Trozos De Una Imagen En Un Picturebox
« en: Jueves 22 de Noviembre de 2007, 01:33 »
Hola!!!

Al final lo he intentado de 20000 formas diferentes, y me sigue pasando básicamente lo mismo, la imagen que me pone en el pictureBox es de una zona diferente a la que yo he seleccionado. Intenté con lo de RectangleToClient, pero sólo me sirvió en parte. Ahora mismo, lo estoy intentando hacer sobre un pictureBox, que está dentro de una tabPage, estos dentro de un formulario. Adjunto el código y un video para que vea lo que me sucede a ver si me puede ayudar: http://www.megaupload.com/?d=IN3T0YC0 o http://rapidshare.com/files/71384291/video.rar.html    (660KB)


Código: Text
  1. private bool seleccionar = false;
  2. private Rectangle RectanguloSeleccion;
  3. private Point PuntoInicio;
  4. private Point PuntoFin;
  5. private int anchoSeleccion;
  6. private int alturaSeleccion;
  7.  
  8.  
  9.  
  10.  
  11.  private void MouseDown_PictureBox(object sender, MouseEventArgs e)
  12. { this.Click_Raton(sender,e);
  13. }
  14.  
  15.  
  16.  
  17. private void MouseUp_PictureBox(object sender, MouseEventArgs e)
  18. { this.Levantar_Raton(sender,e);
  19. }
  20.  
  21.  
  22.  
  23. private void MouseMove_PictureBox(object sender, MouseEventArgs e)
  24. { this.Mover_Raton(sender,e);
  25. }
  26.  
  27.  
  28.  
  29. private void Click_Raton(object sender,MouseEventArgs e)
  30. {
  31.             if (e.Button == MouseButtons.Left)
  32.             {
  33.                 seleccionar = true;
  34.             }
  35.             Control control = (Control)sender;
  36.             PuntoInicio = control.PointToScreen(new Point(e.X, e.Y));
  37. }
  38.  
  39.  
  40.  
  41.  
  42. private void Mover_Raton(object sender,MouseEventArgs e)
  43. {
  44.             if (seleccionar)
  45.             {
  46.                 ControlPaint.DrawReversibleFrame(RectanguloSeleccion,Color.Silver, FrameStyle.Dashed);
  47.                 PuntoFin = ((Control)sender).PointToScreen(new Point(e.X, e.Y));
  48.                 anchoSeleccion = PuntoFin.X - PuntoInicio.X;
  49.                 alturaSeleccion = PuntoFin.Y - PuntoInicio.Y;
  50.                 RectanguloSeleccion = new Rectangle(PuntoInicio.X, PuntoInicio.Y, anchoSeleccion, alturaSeleccion);
  51.                 ControlPaint.DrawReversibleFrame(RectanguloSeleccion,Color.Silver, FrameStyle.Dashed);
  52.             }
  53.  
  54. }
  55.  
  56.  
  57.  
  58. private void Levantar_Raton(object sender, MouseEventArgs e)
  59. {
  60.             seleccionar = false;
  61.             ControlPaint.DrawReversibleFrame(RectanguloSeleccion,Color.Blue, FrameStyle.Thick);
  62.             Rectangle r1 = this.pictureBoxPrincipal.RectangleToClient(RectanguloSeleccion);
  63.             Bitmap imagenPequeña = new Bitmap(anchoSeleccion, alturaSeleccion, this.pictureBoxPrincipal.Image.PixelFormat);
  64.             Rectangle rectDest = new Rectangle(0, 0, anchoSeleccion, alturaSeleccion);
  65.             Graphics g = Graphics.FromImage(imagenPequeña);
  66.             g.DrawImage(this.pictureBoxPrincipal.Image, rectDest, r1, GraphicsUnit.Pixel);
  67.             g.Dispose();
  68.             PictureBox newPB = new PictureBox();
  69.             newPB.Image = imagenPequeña;
  70.             newPB.BorderStyle = BorderStyle.Fixed3D;
  71.             this.pictureBoxPrincipal.Controls.Add(newPB);
  72.             newPB.Location = new System.Drawing.Point(r1.X, r1.Y);
  73.             newPB.Size = new System.Drawing.Size(anchoSeleccion, alturaSeleccion);
  74.             newPB.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Normal;
  75. }
  76.  




Espero que me pueda ayudar. Gracias y saludos!!!!

15
C# / Re: Seleccionar Trozos De Una Imagen En Un Picturebox
« en: Lunes 19 de Noviembre de 2007, 23:43 »
Cita de: "JuanK"
Código: Text
  1. [Form | PictureBox].RectangleToClient
  2. [Form | PictureBox].RectangleToScreen
  3.  
Hola!!!
Primero que todo, muchas gracias por responder!!!
Me he estado mirando lo de Control.RectangleToClient , Control.RectangleToScreen y ControlPaint.DrawReversibleFrame en la msdn, pero no lo acabo de tener claro. A ver si me puede ayudar con:

-¿Qué son coordenadas de cliente y qué son coordenadas de pantalla?
-¿Qué es un rectángulo de cliente y qué uno de pantalla?
-¿Cómo podría aplicar esto a mi código para que, al dibujar los rectángulos de selección, se dibujaran bien los pictureBoxes y las imágenes?



A ver si me puede echar una ayudita, salu2!!!!!!!!!

16
C# / Re: Seleccionar Trozos De Una Imagen En Un Picturebox
« en: Lunes 19 de Noviembre de 2007, 13:12 »
Hola!!!
He encontrado una forma de hacerlo, en la cual creo un Bitmap a partir del rectángulo de selección y luego creo un pictureBox que carga la imagen y que se muestra encima del pictureBox grande. Pero ahora tengo otro problema, me explico: cuando hago el MouseDown, arrastro y luego MouseUp, se dibuja el rectángulo de selección  y también se dibuja el pictureBox, pero la imagen que me carga sale desplazada. Es como si no cojiera bien las coordenadas del puntero. Yo las coordenadas las calculo respecto del pictureBox con MouseEventArgs, no respecto al formulario. Es por esto que si estoy con el puntero dentro del pictureBox, me marca una coordenadas y si salgo fuera del pictureBox, me marca otras coordenadas totalmente diferentes. ¿Por qué puede ser esto?

A continuación te pongo mi código que dibuja un rectángulo (ver video http://www.megaupload.com/?d=FZHW8Z52), a ver si me puedes ayudar:

        private bool seleccionar = false;
        private Rectangle RectanguloSeleccion = new Rectangle(new Point(0, 0), new Size(0, 0));
        private Point PuntoInicio;
        private Point PuntoFin;
        private int alturaRectanguloSeleccion;
        private int anchoRectanguloSeleccion;
        private float[] valoresLineaDiscontinua ={ 3, 2, 3, 2 };



private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        { this.Click_Raton(e); }



 private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        { this.Levantar_Raton(e); }


 private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        { this.Mover_Raton(e); }



private void Click_Raton(MouseEventArgs e)
{
            if (seleccionar & e.Button == MouseButtons.Left)
            {
                    PuntoInicio = new Point(e.X, e.Y);
            }
 }


private void Levantar_Raton(MouseEventArgs e)
{
            if (seleccionar)
            {
                RectanguloSeleccion = new Rectangle(PuntoInicio.X, PuntoInicio.Y, anchoRectanguloSeleccion, alturaRectanguloSeleccion);
                this.Cursor = System.Windows.Forms.Cursors.Cross;
                Graphics objGrafico = this.pictureBoxPrincipal.CreateGraphics();
                Pen pen = new Pen(Color.Red, 1);
                pen.DashPattern = valoresLineaDiscontinua;
                objGrafico.DrawRectangle(pen, RectanguloSeleccion);
            }
}



 private void Mover_Raton(MouseEventArgs e)
 {
            if (seleccionar & e.Button == MouseButtons.Left)
            {
                PuntoFin = new Point(e.X, e.Y);
                anchoRectanguloSeleccion = PuntoFin.X - PuntoInicio.X;
                alturaRectanguloSeleccion = PuntoFin.Y - PuntoInicio.Y;
            }
 }



Y este el el código de hacerlo ya con pictureBoxes + lo que ya tenía yo, y que dibuja los picturesBoxes, pero con las imágenes desplazadas (ver video http://www.megaupload.com/?d=VPM0VDDX)

private bool seleccionar = false;
        private Rectangle RectanguloSeleccion = new Rectangle(new Point(0, 0), new Size(0, 0));
        private Point PuntoInicio;
        private Point PuntoFin;
        private int alturaRectanguloSeleccion;
        private int anchoRectanguloSeleccion;
        private float[] valoresLineaDiscontinua ={ 3, 2, 3, 2 };

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        { this.Click_Raton(e); }



 private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        { this.Levantar_Raton(e); }


 private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        { this.Mover_Raton(e); }


private void Click_Raton(MouseEventArgs e)
{
            if (seleccionar & e.Button == MouseButtons.Left)
            {
                    PuntoInicio = new Point(e.X, e.Y);
            }
 }


private void Levantar_Raton(MouseEventArgs e)
 {
            if (seleccionar)
            {
                RectanguloSeleccion = new Rectangle(PuntoInicio.X, PuntoInicio.Y, anchoRectanguloSeleccion, alturaRectanguloSeleccion);
                Bitmap imagenPequeña = new Bitmap(anchoRectanguloSeleccion, alturaRectanguloSeleccion, this.pictureBoxPrincipal.Image.PixelFormat);
                Rectangle rectDest = new Rectangle(0, 0, anchoRectanguloSeleccion, alturaRectanguloSeleccion);
                Graphics g = Graphics.FromImage(imagenPequeña);
                g.DrawImage(this.pictureBoxPrincipal.Image, rectDest, RectanguloSeleccion2, GraphicsUnit.Pixel);
                g.Dispose();
                PictureBox newPB = new PictureBox();
                newPB.Image = imagenPequeña;
                newPB.BorderStyle = BorderStyle.Fixed3D;
                this.pictureBoxPrincipal.Controls.Add(newPB);
                newPB.Left =  PuntoInicio.X;
                newPB.Top = PuntoInicio.Y;
                newPB.Width = anchoRectanguloSeleccion;
                newPB.Height = alturaRectanguloSeleccion;
                this.Cursor = System.Windows.Forms.Cursors.Cross;
                Graphics objGrafico = this.pictureBoxPrincipal.CreateGraphics();
                Pen pen = new Pen(Color.Red, 1);
                pen.DashPattern = valoresLineaDiscontinua;
                objGrafico.DrawRectangle(pen, RectanguloSeleccion);              
            }
 }


 private void Mover_Raton(MouseEventArgs e)
 {
            if (seleccionar & e.Button == MouseButtons.Left)
            {
                PuntoFin = new Point(e.X, e.Y);
                anchoRectanguloSeleccion = PuntoFin.X - PuntoInicio.X;
                alturaRectanguloSeleccion = PuntoFin.Y - PuntoInicio.Y;
            }
 }


A ver si me puedes echar una mano. Gracias y saludos!!!!

17
C# / Re: Reemplazar Una Línea En Concreto De Un Fichero De
« en: Viernes 16 de Noviembre de 2007, 11:00 »
De acuerdo. Muchas gracias y saludos!!!

18
C# / Reemplazar Una Línea En Concreto De Un Fichero De
« en: Viernes 16 de Noviembre de 2007, 00:17 »
Hola!!!
Resulta que estoy haciendo una aplicación que genera un fichero de texto plano (extensión .proyecto) en el cual escribo 2 líneas. En la primera pongo una ruta y en la segunda otra ruta a una imagen. Lo que quiero hacer es poder sustituir una línea en concreto del fichero; por ejemplo, si la imagen cambia, pues quiero reemplazar la ruta que aparece en la 2º línea del fichero de texto y poner la nueva ruta de la imagen. ¿Existe algún método que me pueda ayudar? Lo estaba haciendo con
Código: Text
  1. StreamWriter s=new StreamWriter(rutaFichero,true);
  2. s.WriteLine(datos);
  3.  
, pero al hacerlo así, me añadía la línea al final del fichero y no me reemplazaba la línea que queria sustituir (ya sé que es porque el "true" habilita el "Append" y por eso se añaden datos al final del fichero).

Sobretodo, lo que quiero es no tener que reescribir  todo el fichero de nuevo sino reemplazar una línea en concreto.

A ver si alguien me puede ayudar, gracias de antemano!!!

19
C# / Re: Seleccionar Trozos De Una Imagen En Un Picturebox
« en: Jueves 15 de Noviembre de 2007, 22:36 »
Hola!!!!
Muchísimas gracias por responder y dedicarle un tiempo al post. Intentaré hacerlo como dice y ya le diré algo.
Infinitas gracias y saludos!!!

20
C# / Seleccionar Trozos De Una Imagen En Un Picturebox
« en: Martes 13 de Noviembre de 2007, 19:22 »
Hola!!!

Resulta que estoy haciendo una aplicación en la que se carga una imagen, y en la que debo poder seleccionar trozos de ella, poderlos guardar o poder aplicar operaciones sobre ellos (por ejemplo si hago click con el botón derecho sobre uno, que me aparezaca un menú). Todo lo que es cargar la imagen  y guardar imágenes lo sé hacer (Image.Save(...). También sé hacer que se quede dibujado una especie de rectángulo de selección (al estilo MSPAINT) sobre la imagen del pictureBox (lo hago controlando los eventos MouseMove, MouseUp y MouseDown). El problema viene cuando he dibujado el rectángulo de selección. En lo que necesito ayuda es:
-Que el trozo imagen se quede "marcada" o que se muestre (¿quizá pasándosela a un nuevo PictureBox y que se muestre sobre el original?).

-Me gustaría que poder guardar cada trozo que vaya marcando.

-Después de haber marcado trozos, que pueda aplicar acciones sobre ellos, como que aparezca un menú cuando hago botón derecho o mouseHover, por ejemplo.
-Creo que la clave estaría en saber cómo obtener una imagen nueva, a partir del trozo de la imagen original que quede "seleccionado".




Ya sé que pido mucho, espero que alguien me pueda ayudar. Gracias de antemano y saludos!!!

21
C# / Re: Cerrar El Formulario De Inicio Y Abrir Otro Formu-
« en: Sábado 10 de Noviembre de 2007, 23:43 »
Ya lo solucioné. Muchas gracias por responder!!!

22
C# / Cerrar El Formulario De Inicio Y Abrir Otro Formu-
« en: Sábado 10 de Noviembre de 2007, 03:36 »
Hola!!!

Tengo un problema con mi aplicación, a ver si alguien me puede ayudar.

Resulta que tengo una aplicación que abre un formulario Form1, que es el principal del proyecto (el que está en el Main:-->Application.Run(new Form1()) ), el cual se encarga de que el usuario rellene 2 textBoxs, y luego le pasa los textos al segundo formulario Form2 y se cierra, dejando abierto el segundo formulario. En este punto tengo 2 problemas:



1.) Si, dentro de Form1, en el método en el que paso los datos del primer formulario (Form1) al segundo (Form2), hago:

Código: Text
  1. Form2 f2=new Form2();
  2. f2.texto1=TextBox1.Text;
  3. f2.texto2=TextBox2.Text;
  4. f2.Show();
  5. this.Close();
  6.  
dado que Form1 es el formulario de inicio de la aplicación,el this.Close() hace que se cierre todo y no se abre el Form2.





2.) Si, dentro de Form1, por el contrario opto por no cerrar el Form1 cuando abro el Form2, sino que lo escondo, así:

Código: Text
  1. Form2 f2=new Form2();
  2. f2.texto1=TextBox1.Text;
  3. f2.texto2=TextBox2.Text;
  4. f2.Show();
  5. this.Hide();
  6.  
, se abre el Form2, mientras el Form1 sigue "vivo" pero invisible, y cuando quiero cerrar el Form2 desde el botón de cerrar
  • , no me cierra realmente la aplicación ya que Form1 está vivo aún.





Lo que necesito concretamente es alguna forma de poder abrir el Form2 desde el Form1 y que Form1 se cierre, pero que nose cierre toda la aplicación, ya que quiero que Form2 siga abierto.
Otra posible solución sería que Form1 se ocultara cuando Forms2 se abriera, y luego desde Forms2 pudiera "matar" el Form1 que está oculto.



Seguramente me estoy ahogando en un vaso de agua, pero bueno, necesito ayuda. A ver si algien me puede ayudar, gracias de antemano!!!!!

23
C# / Re: ¿cómo Ajustar Los Controles De Un Formulario Según
« en: Martes 6 de Noviembre de 2007, 11:56 »
Probaré con eso a ver que tal. Gracias y saludos!!!!

24
C# / ¿cómo Ajustar Los Controles De Un Formulario Según
« en: Lunes 5 de Noviembre de 2007, 02:13 »
Hola a tod@s!!!
Me gustaría saber si hay alguna forma de que mis controles en un formulario se ajusten automáticamente a éste según la resolución de la pantalla. Lo que sucede es que mi formulario se ve bien en una determinada resolución (1280x800 por ejemplo) pero se distorcionan las posiciones de los controles y éstos salen movidos o distorcionados si veo el formulario, por ejemplo a 800x600. Mi intención es que mi formulario se vea de la misma manera en cualquier resolución de pantalla. He visto que hay varias propiedades de la clase Form que me podrían servir, como Anchor, AutoScale, AutoScaleBaseSize, AutoScaleDimensions, AutoScaleMode o Bottom, pero no sé muy bien cómo funcionan. A ver si alguien me puede echar una mano.

Gracias de antemano y saludos!!!!

25
C# / Re: Selecionar Un Trozo De Una Imagen Y Obtener Sus Co
« en: Martes 30 de Octubre de 2007, 01:51 »
Hola!!!
Ya he probé la función  que me dijo y me he miré otras que me podían servir, en concreto la PointToClient, PointToScreen y otras. En concreto he utilizado la PointToClient (devuelve  coordenadas de pantalla, en coordenadas de cliente). Ahora ya he conseguido que se me dibuje la zona de selección y se quede seleccionado (al menos hasta que no haga otro MouseDown...). Los 2 problemas que me han surgido ahora son:
1º) Cuando utiliza PointToScreen o PointToClient, me devuelve en coordenadas de pantalla o de cliente. El problema es que al hacer esto, hay un "error" en las coordenadas que devuelve, y toca sumarle 47 y 65 pixeles en la x y en la y, respectivamente, para que el rectángulo dibujado coincida exactamente con la posición del puntero, y no lo dibuje un poco alejado del puntero.

2º)Cuando hago el mouseMove, se van dibujando diferentes rectángulos (mirar la captura MouseDown+MouseMove.jpg)  hasta que hago el MouseUp, que es cuando se borran los rectángulos y aparece el bueno (mirar MouseUp.jpg). ¿Hay alguna forma para que sólo se dibuje el rectángulo de selección mientras muevo el mouse, y los de posiciones anteriores se borren? Es como el MSPAINT lo que quiero hacer, que se pueda seleccionar un área de una imagen.

En las imagenes adjuntas creo que lo entenderá mejor...

A ver si me puede dar una ayudita, gracias!!!!

Páginas: [1] 2