在Silverlight3绘制sprite图片的一部分

本文介绍如何在Silverlight中实现图片的精确裁剪与定位。通过设置RectangleGeometry及TranslateTransform属性,可以准确地控制图片显示的部分及其位置。文章还提到了在实践中遇到的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

貌似SilverLight中没有像XNA的Draw那样有丰富的重载,可以任意绘画,只能通过设置属性和特效。

现实的应用中往往又要在后台代码中实现而不是在XAML中设置:

 

                int posX = 50;
                
int poxY = 100;
                
int spriteWidth = 50;
                
int spriteHeight = 100;
                Uri uri2 
= new Uri("/MusicSearch;component/Notes/note3.png", UriKind.Relative);
                ImageSource noteListImageMap 
= new BitmapImage(uri2);
                RectangleGeometry xRect 
= new RectangleGeometry();
                xRect.Rect 
= new Rect(posX, poxY, spriteWidth, spriteHeight);
                myImage.Source 
= noteListImageMap;
                myImage.Stretch 
= Stretch.None;
                myImage.Width 
= 350;
                myImage.Height 
= 2900;
                myImage.Clip 
= xRect;
                TranslateTransform translateTransform 
= new TranslateTransform();
                translateTransform.X 
= -posX;
                translateTransform.Y 
= -poxY;
                myImage.RenderTransform = translateTransform; 

                

  首先载入图片,使用Clip属性来裁减图片的指定区域,再用TranslateTransform来实现偏移量,将裁出来的图片移动到原点,过程中反复实验发现图片控件的宽度和高度需要重新设置为sprite图片的高度和宽度,不然的话设置过小会让Clip裁减不到任何东西。

 

 

转载于:https://www.cnblogs.com/fhmsha/archive/2009/11/22/1608217.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值