PictureBox正在执行不需要的缩放C# 我目前有一个Windows窗体应用程序,中间有一个图片框,我也在绘制各种图像。这些图像绘制得很好,只是它们都被精确地放大了25%。我还应该补充一点,我正在使用Paint方法绘制所有内容,使用PaintEventArgs获取图形设备
我确保SizeMode设置为Normal,我反复检查图形对象的比例因子是否为1,以及我传递给paint方法的所有图像对象的大小是否与它们应该的大小相同,但当绘制它们时,它们的大小不同 到目前为止,我一直在调用g.drawImage(image,Rectangle),并将图像的宽度和高度传递为矩形的宽度和高度,以便它们被强制以正确的大小绘制,但我觉得这应该是一个短期修复,我忽略了一些简单的事情 任何帮助都会很好,提前谢谢 代码如下(仅重要位):PictureBox正在执行不需要的缩放C# 我目前有一个Windows窗体应用程序,中间有一个图片框,我也在绘制各种图像。这些图像绘制得很好,只是它们都被精确地放大了25%。我还应该补充一点,我正在使用Paint方法绘制所有内容,使用PaintEventArgs获取图形设备,c#,winforms,graphics,scale,C#,Winforms,Graphics,Scale,我确保SizeMode设置为Normal,我反复检查图形对象的比例因子是否为1,以及我传递给paint方法的所有图像对象的大小是否与它们应该的大小相同,但当绘制它们时,它们的大小不同 到目前为止,我一直在调用g.drawImage(image,Rectangle),并将图像的宽度和高度传递为矩形的宽度和高度,以便它们被强制以正确的大小绘制,但我觉得这应该是一个短期修复,我忽略了一些简单的事情 任何帮助都会很好,提前谢谢 代码如下(仅重要位): 这听起来像是图像的水平分辨率和垂直分辨率属性在您不希
这听起来像是图像的
水平分辨率
和垂直分辨率
属性在您不希望应用时被应用,根据Jeremy的链接修改代码,确保在调用DrawImage
之前重置或忽略HorizontalResolution
和VerticalResolution
,向我们显示代码!我打赌这很简单:@JeremyThompson现在就用代码编辑。希望那里有足够的信息来帮助你!
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);
}