主要就是关于图像失真方面的问题。
我发现缩放因子在缩放图像的时候,会出现中度的失真。
原图为1920×1080。
缩放后为753×423。
结果图像出现中度的失真。
//DCX和DCY都是int型,为全局变量
DCX = GetPrivateProfileInt("视频设置", "窗口宽度", 760, "./Setting.ini");
DCY = GetPrivateProfileInt("视频设置", "窗口高度", 480, "./Setting.ini");
//计算全屏数据
if (GetPrivateProfileInt("视频设置", "全屏运行", 0, "./Setting.ini"))
{
DCX = GetSystemMetrics(SM_CXSCREEN);
DCY = GetSystemMetrics(SM_CYSCREEN);
}
if (GetPrivateProfileInt("视频设置", "保留控制台", 1, "./Setting.ini") == 1)
{
initgraph(DCX, DCY, SHOWCONSOLE | NOCLOSE); // 创建绘图窗口
printf("控制台已保留\n");
}
if (GetPrivateProfileInt("视频设置", "保留控制台", 1, "./Setting.ini") == 0)
{
initgraph(DCX, DCY, NOCLOSE); // 创建绘图窗口
}
printf("计算窗口显示缩放\n");
{
float s;
int x = DCX;
int y = DCY;
DCX = DCX / 16;
DCY = DCY / 9;
if (DCX > DCY)
{
DCX = DCY * 16;
DCY = DCY * 9;
}
if (DCX < DCY)
{
DCY = DCX * 9;
DCX = DCX * 16;
}
if (DCX == DCY)
{
DCX = x;
DCY = y;
}
x = x - DCX;
y = y - DCY;
x = x / 2;
y = y / 2;
s = (float)DCX / 1920;
setaspectratio(s, s);
setorigin(x, y);
}
有什么办法解决这种失真吗?