首页 > 解决方案 > 如何使用屏幕分辨率缩放图像

问题描述

我正在用 C# 和 Windows 窗体编写一个简单的程序来处理像素艺术图像,我需要随着画布分辨率的变化来缩放这些图像

我在 PictureBox 上绘制图像并使用Matrix将其图形对象缩放到某个分辨率,我需要一种方法来根据新分辨率在各个方向正确缩放这些图像,而不会使它们的像素变为模糊

这是我用来缩放图形的方法:

public void PictureBox_Paint(object sender, PaintEventArgs e)
{
    var graphics = e.Graphics;
    graphics.MultiplyTransform(ScaleMatrix());
}

public float VirtualWidth = 1024;
public float VirtualHeight = 768;

public Matrix ScaleMatrix()
{
    var matrix = new Matrix();

    var x = (float) this.PictureBox.Width / VirtualWidth;
    var y = (float) this.PictureBox.Height / VirtualHeight;

    matrix.Scale(x, y);

    return matrix;
}

完成这项任务的正确实施是什么?

标签: c#imagewinformsgraphics

解决方案


推荐阅读