¿Por qué mi imagen se vuelve a escalar automáticamente?

Tuve que empezar a hacer un rompecabezas/rompecabezas de imágenes hoy en clase, lo cual salió bien, excepto por el hecho de que mi imagen se mantuvo/sigue escalando por sí misma.

La imagen en sí es de 300*300, pero al ejecutar el código se convierte en 192*192, aunque utilizo el tamaño de la imagen para declarar el tamaño.

El código consta de:

public partial class Form1 : Form
{
    private Bitmap Bmp;
    private Point BmpLoc;

    int x = 0, y = 0;

    public Form1()
    {
        InitializeComponent();
        this.Paint += new System.Windows.Forms.PaintEventHandler(Form1_Paint);
    }

    private void showButton_Click(object sender, EventArgs e)
    {
        Bmp = new Bitmap("C:\\Users\\Admin\\Desktop\\img.png");
        BmpLoc = new Point(0, 0);
        Rectangle R = new Rectangle(BmpLoc, Bmp.Size);
        int noot = Bmp.Size.Height;
        label3.Text = noot.ToString();

        this.Invalidate(R);
    }
    private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
        if (Bmp != null)
        {
            e.Graphics.DrawImage(Bmp, BmpLoc);
        }
    }

Como puede ver, toma el tamaño de mapa de bits para el tamaño del rectángulo, ¿no debería mostrar simplemente 300*300?

Gracias de antemano por responder

preguntado el 07 de marzo de 13 a las 22:03

Hm. ¿Cómo verificas que termina como 192px en la pantalla? ¿Captura de pantalla? ¿Qué es Bmp.Size en tiempo de ejecución? -

@usr Parte de la asignación del rompecabezas fue agregar la ubicación del cursor, para poder ver en qué píxel está el cursor. Captura de pantalla: imageshack.us/a/img9/7690/37798533.png el número blanco es la altura del Bmp -

1 Respuestas

Esto se debe al DPI de la imagen. Puedes usar Graphics.DrawImageUnscaled:

e.Graphics.DrawImageUnscaled(Bmp, BmpLoc);

Puede verificar el DPI (resolución) de la imagen usando HorizontalResolution y VerticalResolution propiedades. Por lo general, la pantalla tiene una resolución de 96 DPI (puntos por pulgada). Sin embargo, esto es configurable en Windows. Si la resolución de la imagen es diferente a esta, la imagen se escala para mantener su tamaño de pantalla.

respondido 07 mar '13, 22:03

¡Sí, esto funcionó! Cambié la resolución (se configuró en 146 sin ningún motivo) a 96 y funcionó bien. ¡Gracias por ayudar! - JC

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.