我目前有一个 Windows 窗体应用程序,中间有一个图片框,我也在绘制各种图像。图像画得很好,只是它们都被放大了 25%。我还应该补充一点,我在 Paint 方法中绘制所有内容,使用 PaintEventArgs 来获取图形设备。
我确保将 SizeMode 设置为 Normal,我一遍又一遍地检查图形对象的比例因子是 1,并且我传递给paint方法的所有图像对象都是它们应该的大小,但是当它们被绘制时它们的尺寸不同。
到目前为止,我一直在调用 g.drawImage(image, Rectangle) 并将图像的宽度和高度作为 Rectangle 的宽度和高度传递,以便它们被迫以正确的大小绘制,但我觉得这应该做一个短期的修复,我忽略了一些简单的事情。
任何帮助都会很棒,在此先感谢。
代码如下(仅重要位):
public class Level : PictureBox
{
...
private Image image;
...
public Level(TabPage parent, Panel propertiesPanel, ItemManager items, string levelName)
{
...
image = Image.FromFile(@"Levels/" + levelName);
Size = image.Size;
SizeMode = PictureBoxSizeMode.Normal;
MouseClick += new MouseEventHandler(level_MouseClick);
MouseMove += new MouseEventHandler(level_MouseMove);
Paint += new PaintEventHandler(level_Paint);
Invalidate();
}
private void level_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
//With the rectangle fix (drawing to correct size)
g.DrawImage(image, new Rectangle(0, 0, image.Size.Width, image.Size.Height));
////Without the fix (as i thought it should be be this is where it scales it)
//g.DrawImage(image, new Point(0, 0));
drawPlacedItems(g);
drawItemPreview(g);
}