int frame, int columns, float rotation, float scaling, D3DCOLOR color)
{
//create a scale vector
D3DXVECTOR2 scale( scaling, scaling );
//create a translate vector
D3DXVECTOR2 trans( x, y );
//set center by dividing width and height by two
D3DXVECTOR2 center( (float)( width * scaling )/2, (float)( height * scaling )/2);
//create 2D transformation matrix
D3DXMATRIX mat;
D3DXMatrixTransformation2D( &mat, NULL, 0, &scale, ¢er, rotation, &trans );
//tell sprite object to use the transform
spriteobj->SetTransform( &mat );
//calculate frame location in source image
int fx = (frame % columns) * width;
int fy = (frame / columns) * height;
RECT srcRect = {fx, fy, fx + width, fy + height};
//draw the sprite frame
spriteobj->Draw( image, &srcRect, NULL, NULL, color );
}
这段代码使一个物体旋转伸缩,但是物体缩放时是以物体左上角的左边为中心缩放的,请问一下能不能是它按照物体的中心为中心点进行缩放。
5 个解决方案
#1
第二个参数是缩放的中心?
#2
是的,但是好像不是简单的给个坐标就行的,搞不好会把其他的给弄乱
#3
用这个函数
D3DXMatrixAffineTransformation2D
D3DXMatrixAffineTransformation2D
#4
或者
你制定缩放中心看
D3DXMatrixTransformation2D( &mat, ¢er, 0, &scale, ¢er, rotation, &trans );
你制定缩放中心看
D3DXMatrixTransformation2D( &mat, ¢er, 0, &scale, ¢er, rotation, &trans );
#5
我现在还是direct初学者,楼上的那个函数还不会用,如果可以的话还是想先用D3DXMatrixTransformation2D把问题解决掉。
顺便说一下我刚有研究了一下,把D3DXMatrixTransformation2D中的第二个设置缩放中心点的参数给出后,再把旋转关掉就可以成功了,可把缩放和旋转一起运作里面的物体就又会满屏幕乱窜,麻烦大家再帮帮忙,谢谢
顺便说一下我刚有研究了一下,把D3DXMatrixTransformation2D中的第二个设置缩放中心点的参数给出后,再把旋转关掉就可以成功了,可把缩放和旋转一起运作里面的物体就又会满屏幕乱窜,麻烦大家再帮帮忙,谢谢
#1
第二个参数是缩放的中心?
#2
是的,但是好像不是简单的给个坐标就行的,搞不好会把其他的给弄乱
#3
用这个函数
D3DXMatrixAffineTransformation2D
D3DXMatrixAffineTransformation2D
#4
或者
你制定缩放中心看
D3DXMatrixTransformation2D( &mat, ¢er, 0, &scale, ¢er, rotation, &trans );
你制定缩放中心看
D3DXMatrixTransformation2D( &mat, ¢er, 0, &scale, ¢er, rotation, &trans );
#5
我现在还是direct初学者,楼上的那个函数还不会用,如果可以的话还是想先用D3DXMatrixTransformation2D把问题解决掉。
顺便说一下我刚有研究了一下,把D3DXMatrixTransformation2D中的第二个设置缩放中心点的参数给出后,再把旋转关掉就可以成功了,可把缩放和旋转一起运作里面的物体就又会满屏幕乱窜,麻烦大家再帮帮忙,谢谢
顺便说一下我刚有研究了一下,把D3DXMatrixTransformation2D中的第二个设置缩放中心点的参数给出后,再把旋转关掉就可以成功了,可把缩放和旋转一起运作里面的物体就又会满屏幕乱窜,麻烦大家再帮帮忙,谢谢