• Lunes 23 de Diciembre de 2024, 00:36

Autor Tema:  System.drawing Se Come Pixeles.  (Leído 1228 veces)

ejcrashed

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
System.drawing Se Come Pixeles.
« en: Martes 21 de Agosto de 2007, 21:20 »
0
Hola amigos programadores, soy nuevo por aca y bueno que mejor manera de presentarme pues con un problemita  :D.

 He buscado informacion sobre este problema pero no he podido encontrar mucho al respecto y siendo que soy relativamente nuevo con C# pues estoy un poco perdido.

 Lo que sucede es lo siguiente, necesito crear una clase para imprimir forms y controls, despues de investigar un poco sobre el asunto llegue a la conclusion de que la mejor manera era implementandolo yo mismo por medio del uso de System.Drawing.

 Entonces me di a la tarea de crear las funciones y demas parafernalia y en realidad ya estaria listo, sin embargo he notado algo bastante curioso, al parecer cuando uso funciones de System.Drawing.Graphics como DrawRectangle para dibujar figuras el tamaño de las mismas cambia en el canvas del PrintDocument que estoy usando.

 Por ejemplo, si dibujo un rectangulo de 400x400 px, a la hora de aparecer en el canvas este mide 383x383 px, lo curioso es que las textos con DrawString si se dibujan exactamente iguales que en la forma (medido pixel por pixel). Tambien si dibujo algun objeto usando la clase ControlPaint este se crea con las dimensiones adecuadas.

 Que puede provocar este comportamiento?

Saludos

Scherzo

  • Miembro activo
  • **
  • Mensajes: 64
    • Ver Perfil
    • http://www.mma-spain.com
Re: System.drawing Se Come Pixeles.
« Respuesta #1 en: Jueves 30 de Agosto de 2007, 18:28 »
0
Hola, no sé si esto tendrá que ver con tu problema, pero buscando información me he encontrado con este texto que te copio literalmente:

Citar
"An Image stores a value for pixel width and a value for horizontal resolution (dots per inch). The physical width, measured in inches, of an image is the pixel width divided by the horizontal resolution. For example, an image with a pixel width of 216 and a horizontal resolution of 72 dots per inch has a physical width of 3 inches. Similar remarks apply to pixel height and physical height.

This method draws an image using its physical size, so the image will have its correct size in inches regardless of the resolution (dots per inch) of the display device. For example, suppose an image has a pixel width of 216 and a horizontal resolution of 72 dots per inch. If you call this method to draw that image on a device that has a resolution of 96 dots per inch, the pixel width of the rendered image will be (216/72)*96 = 288."

En este caso está hablando de a la hora de imprimir una imagen, pero puesto que es un método también incluido en System.Drawing, a lo mejor el comportamiento a la hora de imprimir un rectángulo es similar.

No sé si te es posible, pero si puedes, comprueba a ver si la resolución del "canvas" que usas y la del rectángulo coinciden, ya que si no, posiblemente lo que te está pasando es que está reajustando el número de pixels del rectángulo para que mida lo adecuado en la resolución del canvas.

Saludos