Windows 및 Xbox 용 XNA에서 간단한 2D 게임을 만들었습니다. 저는이 게임을 SpriteBatch, Texture2D 및 기타 게임에서 사용하는 모든 종류의 XNA 제품을 지원하는 Silverlight 5 (이 글을 쓰는 시점에서 아직 RC에서)로 이식하는 중입니다. 내 코드를 Silverlight로 성공적으로 이식했지만 여전히 해상도/크기 조정 문제로 어려움을 겪고 있습니다.Silverlight 응용 프로그램을 너비/높이 50 %로 조정하려면 어떻게해야합니까?
내 원래의 코드와 콘텐츠는 1280 * 720의 해상도로 작동하도록 구성되어있다 - 나는 그것을 그런 식으로 유지하려면 -하지만보다 관리 크기로 웹 페이지에 실버 라이트 게임을 포함 할 : 640x360 (원래 크기의 절반).
그럼 내 질문은 다음과 같습니다. 실버 라이트 앱 전체를 원래 크기의 50 %로 축소하는 방법은 무엇입니까??
저는 제대로 된 것 같지만 제대로 작동시킬 수는 없습니다. 나는 RenderTransform
과 ScaleTransform
XAML 요소를 발견했으며, 그들은 인 것처럼 보였습니다.은 내가 찾고있는 것을 성취하지만 꽤 아닙니다. 내 XAML은 다음과 같습니다
<!-- Some attributes omitted for brevity -->
<UserControl x:Class="Silverlight3dApp.MainPage"
d:DesignWidth="1280"
d:DesignHeight="720">
<Grid x:Name="LayoutRoot" Background="White">
<Grid.RenderTransform>
<ScaleTransform x:Name="Scale" ScaleX="0.5" ScaleY="0.5" />
</Grid.RenderTransform>
<DrawingSurface x:Name="myDrawingSurface" Draw="myDrawingSurface_Draw" />
</Grid>
</UserControl>
그리고 내 HTML 개체는 다음과 같습니다
그래서 포함 된 HTML 개체가 (원하는) 640 × 360으로 설정하고, 실버 라이트 응용 프로그램은 1280 * 720으로 설정되어<object data="data:application/x-silverlight-2,"
type="application/x-silverlight-2"
width="640"
height="360">
<!-- etc. -->
</object>
그러나 ScaleX와 ScaleY 모두 0.5로 스케일됩니다. 이 종류의 작품; 앱이 50 % 크기로 축소되지만 그려지는 콘텐츠는 자른입니다. 상단 왼쪽 사분면 만 볼 수 있으므로 320x180 분량의 내용 만 볼 수 있습니다 (원래 크기로 640x360이었을 것입니다).
이 원유 도면에있는 X의 나는 실버 포함 된 개체의 내용을 볼 경우 다른 모든 갑자기 잘려 비어, 대표 :
___________
|XXXXX |
|XXXXX | 360px
| |
|___________|
640px
내가 실버 멍청한 놈, 그래서 내가 '느낌이 분명히 뭔가 빠져 있어요. 어떤 아이디어?
응답 해 주셔서 감사합니다. 내 경우에는 실제로 완벽하게 작동합니다. 완료 및 완료. 고맙습니다! 귀하의 답변을 수락 할 준비가되었습니다. SpriteBatch 이상을 사용하는 다른 사람들에게 효과가있는 "순수 Silverlight"솔루션을 보유하고 있는지 알아보기 위해 조금만 보류하겠습니다. 관계없이 Upvoted, 좋은 대답, 감사합니다. 추신 SilverSprite 작성자입니까? 그렇다면 멋진 작품! 어제 그걸 가지고 놀고 있었어. – Michael
캔버스에서 DrawingSurface를 래핑 해 볼 수 있습니다. 그리드가하는 클립핑을 때때로 방지 할 수 있습니다. 예, 저는 SilverSprite를 썼습니다. 현재 Silverlight 5의 새로운 기능, 너무 많은 프로젝트, 충분한 시간이 필요하지 않습니다. –