Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在SFML中,如何在没有缩放因子的情况下应用转换?_C++_Sfml - Fatal编程技术网

C++ 在SFML中,如何在没有缩放因子的情况下应用转换?

C++ 在SFML中,如何在没有缩放因子的情况下应用转换?,c++,sfml,C++,Sfml,我正在基于wiki上的创建一个SFML用户界面系统。我有一个TextBox节点,其中包含我想要显示的sf::Text对象。我的问题是,当我增加sf::Text对象的比例因子时,它会放大文本,使其显示为像素。增加字体大小会更有意义,但我不知道如何应用父节点减去比例因子的变换来防止放大效果。我对转换矩阵的理解非常有限,我收集的是应用转换的矩阵。任何关于如何继续的建议都将不胜感激。我最终找到了帮助我将比例因子从变换矩阵中分离出来的方法。对于那些有类似问题的人,以下是我得出的解决方案: const fl

我正在基于wiki上的创建一个SFML用户界面系统。我有一个TextBox节点,其中包含我想要显示的sf::Text对象。我的问题是,当我增加sf::Text对象的比例因子时,它会放大文本,使其显示为像素。增加字体大小会更有意义,但我不知道如何应用父节点减去比例因子的变换来防止放大效果。我对转换矩阵的理解非常有限,我收集的是应用转换的矩阵。任何关于如何继续的建议都将不胜感激。

我最终找到了帮助我将比例因子从变换矩阵中分离出来的方法。对于那些有类似问题的人,以下是我得出的解决方案:

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
是应用于文本的比例。