• Miércoles 15 de Mayo de 2024, 02:43

Autor Tema:  Recibir estructura size como parámetro  (Leído 2417 veces)

okap

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Recibir estructura size como parámetro
« en: Viernes 19 de Septiembre de 2008, 13:25 »
0
Hola a todos.
 
Estoy intentado crearme una libreria con funciones del tipo utilidades, las típicas que voy a utilizar varias veces en los diferentes proyectos que haga, como funciones de escalado de pantalla y demás.
El problema que tengo es que a una de estas funciones quiero pasar un parámetro del tipo Size, ya que quiero recibir como parametro el tamaño del control que voy a escalar y poder acceder así al Height y Width. Size es una estructura pero al crearme esta librería el compilador me dice que no reconoce ‘Size’.
Alguién sabe que referencia me hace falta o utilizando using.
Muchas gracias por vuestra ayuda.
Un saludo.

okap

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Recibir estructura size como parámetro
« Respuesta #1 en: Viernes 19 de Septiembre de 2008, 13:37 »
0
Size lo necesito para recibir los valores height y width de un formulario para poder escalarlo. Tengo claro que es una estructura del espacio de nombres System.Windows, pero desconozco como declarar dicho parámetro en una función que quiero implementar en una librería aparte.

mx_latino

  • Miembro activo
  • **
  • Mensajes: 91
  • Nacionalidad: ec
    • Ver Perfil
La libreria es Drawing
« Respuesta #2 en: Viernes 19 de Septiembre de 2008, 15:43 »
0
Que tal compadre!! la libreria que deberias utilizar es
Código: Text
  1.  
  2. using System.Drawing;
  3.  
  4.  

y pues para generar el procedimiento y si quieres que te de como resultado un size con los cambios que necesites, pues solo haces algo como esto:
Código: Text
  1.  
  2. private Size Escalar(Size Original)
  3. {
  4.             Console.WriteLine("Height original : " + Original.Height.ToString());
  5.             Console.WriteLine("Width original : " + Original.Width.ToString());
  6.             Original.Height = Original.Height + 10;
  7.             Original.Width = Original.Width + 10;
  8.             Console.WriteLine("Height alterado : " + Original.Height.ToString());
  9.             Console.WriteLine("Width alterado : " + Original.Width.ToString());
  10.             return Original;
  11. }
  12.  
  13.  

Saludos y suerte!!  :comp:

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Recibir estructura size como parámetro
« Respuesta #3 en: Viernes 19 de Septiembre de 2008, 15:47 »
0
System.Drawing;

Hay que buscar un poco en la ayuda de Visual Studio y MSDN antes de hacer preguntas obvias ;)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Recibir estructura size como parámetro
« Respuesta #4 en: Viernes 19 de Septiembre de 2008, 15:48 »
0
ups, me la gano mx_latino

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

mx_latino

  • Miembro activo
  • **
  • Mensajes: 91
  • Nacionalidad: ec
    • Ver Perfil
Re: Recibir estructura size como parámetro
« Respuesta #5 en: Viernes 19 de Septiembre de 2008, 16:07 »
0
Cita de: "ProfesorX"
ups, me la gano mx_latino

Suele pasar..   :P

okap

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Recibir estructura size como parámetro
« Respuesta #6 en: Viernes 19 de Septiembre de 2008, 17:51 »
0
Hola y gracias por responder.
  Eso que me comentais ya lo he probado antes de remitir el mensaje en este foro y no ha funcionado.
  Resulta que me quiero crear una ClassLibrary independiente donde poner una serie de funciones-utilidades. Pues bien, es esta ClassLibrary tengo la cabecera de la siguiente función y para la variable 'tamanyo' el compilador me muesta el siguiente error: error CS0246: The type or namespace name 'Size' could not be found (are you missing a using directive or an assembly reference?). Este mensaje me lo sigue indicando aún poniendo 'using System.Drawing' en la cabecera de la libreria.
  El prototipo de mi función es el siguiente: public static void EscalarVentanaHija(System.Windows.Forms.Form frm, Size tamanyo)
  La verdad es que no sé que es lo que me puede estar fallando.
  Agradezco mucho vuestra ayuda, mil gracias.
  Un saludo.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Recibir estructura size como parámetro
« Respuesta #7 en: Sábado 20 de Septiembre de 2008, 00:23 »
0
Entonces necesitas agregar la referencia al ensamblado.

Ve al menu Proyecto/Agregar Referencia, y en la pestaña .NET de la ventana que se abre, busca System.Drawing, y dale aceptar.

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

okap

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Recibir estructura size como parámetro
« Respuesta #8 en: Sábado 20 de Septiembre de 2008, 15:04 »
0
Hola Profesor X, gracias por responder.
  Te explico, esa opción ya la había probado. La he probado tanto añadiendo la referencia 'System.Drawing' a ella sóla y ya está e incluso por probar también poniendola utilizando 'using System.Drawing', las dos a la vez aunque parezca absurdo, pero no funciona. Me sigue apareciendo un error al compilar, dicho error es el que ya he comentado anteriormente: error CS0246: The type or namespace name 'Size' could not be found (are you missing a using directive or an assembly reference?).
  A continuación te remito el código de la función que quiero incluir en la libreria de funciones de utitlidades por si tú vieses algo anormal que yo no haya visto y me pudieses ayudar, lo cual te agradecería.
  Muchas gracias por todo.
  Un saludo.

  El código es el siguiente:

  •        

        public static void EscalarVentanaHija(System.Windows.Forms.Form frm, Size tamanyo)
        {          
            float h = SystemInformation.PrimaryMonitorMaximizedWindowSize.Width - tamanyo.Width;
            float v = SystemInformation.PrimaryMonitorMaximizedWindowSize.Height - tamanyo.Height;

            float relH = h / (float)1014;
            float relV = v / (float)716;

            frm.Scale(new SizeF(relH, (float)relV));
        }//fin EscalarVentanaHija

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Recibir estructura size como parámetro
« Respuesta #9 en: Sábado 20 de Septiembre de 2008, 20:20 »
0
Pues probe tu codigo, y me compila sin errores.

Quizas tengas algo dañado del framework, porque no desinstalas VS y lo vuelves a instalar?

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

okap

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Recibir estructura size como parámetro
« Respuesta #10 en: Domingo 21 de Septiembre de 2008, 23:51 »
0
Hola Profesor X:

Ya he resuelto mi problema.  Además de incluir las referencias a System.Windows.Forms y System.Drawing he tenido que indicar en cada uno de los metodos o estructuras que hacian referencia al espacio de nombres System..., toda la ruta de acceso hasta el metodo o estructura deseado. La verdad es que resulta un poco tedioso escribir tanto, aunque eso se puede solucionar creando un alias mediante using, pero la verdad es que no termino de comprender por qué si he incluido la referencia a System.Windows.Forms y System.Drawing, luego a la hora de escribir el código tengo que volver a escribirlo todo. Te indico un ejemplo para que lo veas:

        public static void EscalarVentanaHija(System.Windows.Forms.Form frm, System.Drawing.Size tamanyo)
        {
            float h = System.Windows.Forms.SystemInformation.PrimaryMonitorMaximizedWindowSize.Width - tamanyo.Width;
            float v = System.Windows.Forms.SystemInformation.PrimaryMonitorMaximizedWindowSize.Height - tamanyo.Height;

            float relH = h / (float)1014;
            float relV = v / (float)716;                      

            frm.Scale(new System.Drawing.SizeF(relH, (float)relV));
        }//fin EscalarVentanaHija

Una vez hecho esto compilé y no tuve ningún problema.
Muchas gracias por toda la ayuda prestada. Me ha servido de mucho
Saludos