1

私は今日クラスでジグソー/画像パズルを作り始めなければなりませんでしたが、私の画像がそれ自体で再スケーリングを維持/維持するという事実を除いて、うまくいきました。

画像自体は300*300ですが、画像自体のサイズを使用してサイズを宣言しているにもかかわらず、コードを実行すると192*192になります。

コードは次のもので構成されています。

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);
        }
    }

ご覧のとおり、長方形のサイズにはビットマップサイズが必要です。したがって、300*300だけを表示するべきではありませんか。

よろしくお願いします

4

1 に答える 1

4

これは、画像の DPI によるものです。使用できますGraphics.DrawImageUnscaled

e.Graphics.DrawImageUnscaled(Bmp, BmpLoc);

HorizontalResolutionおよびVerticalResolutionプロパティを使用して、画像の DPI (解像度) を確認できます。通常、画面の解像度は 96 DPI (ドット/インチ) です。ただし、これは Windows で構成可能です。画像の解像度がこれ以外の場合、画像は画面サイズを維持するようにスケーリングされます。

于 2013-03-07T22:48:19.250 に答える