C++ 在SFML中,如何在没有缩放因子的情况下应用转换?
我正在基于wiki上的创建一个SFML用户界面系统。我有一个TextBox节点,其中包含我想要显示的sf::Text对象。我的问题是,当我增加sf::Text对象的比例因子时,它会放大文本,使其显示为像素。增加字体大小会更有意义,但我不知道如何应用父节点减去比例因子的变换来防止放大效果。我对转换矩阵的理解非常有限,我收集的是应用转换的矩阵。任何关于如何继续的建议都将不胜感激。我最终找到了帮助我将比例因子从变换矩阵中分离出来的方法。对于那些有类似问题的人,以下是我得出的解决方案:C++ 在SFML中,如何在没有缩放因子的情况下应用转换?,c++,sfml,C++,Sfml,我正在基于wiki上的创建一个SFML用户界面系统。我有一个TextBox节点,其中包含我想要显示的sf::Text对象。我的问题是,当我增加sf::Text对象的比例因子时,它会放大文本,使其显示为像素。增加字体大小会更有意义,但我不知道如何应用父节点减去比例因子的变换来防止放大效果。我对转换矩阵的理解非常有限,我收集的是应用转换的矩阵。任何关于如何继续的建议都将不胜感激。我最终找到了帮助我将比例因子从变换矩阵中分离出来的方法。对于那些有类似问题的人,以下是我得出的解决方案: const fl
const float* mat = states.transform.getMatrix();
float temp[16];
std::copy(mat, mat + 16, temp); // mat has 16 members, hence mat + 16 is the last member
float scalex = sqrtf((temp[0] * temp[0]) + (temp[1] * temp[1]));
float scaley = sqrtf((temp[4] * temp[4]) + (temp[5] * temp[5]));
// Remove scale from the final transform
sf::Transform textState(
temp[0] / scalex, temp[1] / scaley, temp[12],
temp[4] / scalex, temp[5] / scaley, temp[13],
0.f, 0.f, 1.f
);
我会使用不同的字体大小。只需设置
fontsizeNew=sftextScale*fontsizeOriginal
,其中sftextScale
是应用于文本的比例。