WPF有CroppedBitmap类,能够很方便的裁剪图片,可是SilverLight里面没有。这可麻烦了用SilverLight做游戏的同仁们。

虽然可以用一个Border包着一个Image来解决,但程序员往往喜欢用更简单的方法。

这里给出一个用转换器实现的裁剪案例

代码只保证SilverLight 4.0测试通过,其他版本未测试

    public class CroppedBitmapConverter : IValueConverter{public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture){BitmapImage bi = value as BitmapImage;if (bi == null) return null;Rect rect;if (parameter is Rect){rect = (Rect)parameter;}else{try{string[] s = parameter.ToString().Split(',');rect = new Rect(double.Parse(s[0]), double.Parse(s[1]), double.Parse(s[2]), double.Parse(s[3]));}catch{rect = new Rect(0, 0, bi.PixelWidth, bi.PixelHeight);}}Image image = new Image();image.Stretch = Stretch.None;image.RenderTransform = new TranslateTransform { X = -rect.X, Y = -rect.Y };image.Source = bi;Canvas canvas = new Canvas();canvas.Width = rect.Width;canvas.Height = rect.Height;canvas.Children.Add(image);return new WriteableBitmap(canvas, null);}public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture){throw new NotSupportedException();}}

相应的前台代码:

<UserControlxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:SilverlightApplication1"x:Class="SilverlightApplication1.MainPage"Width="640" Height="480"><UserControl.Resources><local:CroppedBitmapConverter x:Key="CroppedBitmapConverter"/></UserControl.Resources><Grid x:Name="LayoutRoot" Background="#FF959595"><Image x:Name="image" Source="未命名.jpg" VerticalAlignment="Top" HorizontalAlignment="Left" Stretch="None" /><Image DataContext="{Binding Source, ElementName=image}"Source="{Binding ConverterParameter=180\,0\,130\,100, Converter={StaticResource CroppedBitmapConverter}, Mode=OneWay}"VerticalAlignment="Bottom" HorizontalAlignment="Left" Stretch="None" /></Grid>
</UserControl>

最终的效果

转载于:https://www.cnblogs.com/Aimeast/archive/2011/04/05/2006092.html

解决SilverLight的图片裁剪问题相关推荐

  1. EPUB.js 解决图片裁剪问题(缩放问题)

    在EPUB.js中,如果需要实现自动缩放,通过添加smartimages.js就可以实现图片自动缩放了,经过研究smartimages.js,发现,他可以是实现图片的缩放,但只能实现图片比需要显示的空 ...

  2. [待解决]自定义头像时使用vue-cropper进行图片裁剪,得到的是base64格式的图片,如何对接file类型的api接口

    [待解决]自定义头像时使用vue-cropper进行图片裁剪,得到的是base64格式的图片,如何对接file类型的api接口 百度很多都没用,有想法欢迎指点.

  3. 一个利用html5的图片裁剪功能(已解决ios压扁缩放等bug)

    推荐: 这一篇文章是早年为了解决图片裁剪的探索性文章,现在已经开放出了falsh版及html5版本的图片裁剪插件,各位有时间可以看看: 浮士德html5图片裁剪器2016开源版 浮士德头像裁剪flas ...

  4. android 图片自动裁剪图片大小,android调用原生图片裁剪后图片尺寸缩放的解决方法...

    在安卓开发中,如果对拍照后的图片进行图片裁剪,如果是调用系统的裁剪,如下: /* * 裁剪图片 */ private void cropPhoto() { Intent intent = new In ...

  5. android图片布局填冲满,Android图片裁剪库——cropper使用,完美解决图片填充不满布局问题...

    前些时间请了一个月假,远程办公,期间项目主要做图片裁剪,脑子里第一反应就是github上开源裁剪库,试了排名的前几个,其中不是UI定制度太低就是裁剪效果不怎么样.当然你也可以直接intent一下系统的 ...

  6. GD库图片裁剪指定形状解决办法(PHP GD库 海报)

    需求描述:需要把图片裁剪成一个指定的平行四边形,目的是使用GD库,把裁剪后的图片放在底图上面,使最终合成的图片看起来是一个底图+平行四边形的样子 提示:可以结合本作者的其他文章,来生成一个定制化的海报 ...

  7. ipad html 自定义裁剪图片大小,移动端图片裁剪上传插件 Mavatar.js(原创)

    插件描述:移动端头像上传,支撑头像预览和放大缩小平移,内置上传至后端请求方法. 注:请在移动端用手势查看缩放效果,PC端无法缩放 Mavatar 移动端头像上传,支撑头像预览和放大缩小平移,内置上传至 ...

  8. ios 将矩形图片裁剪成圆形图片

    在ios中将一个正方形的图片裁剪成圆形的图片是一件非常容易的事情, 直接设置 imageView.layer.cornerRadius 这个属性, 再设置 imageView.clipsToBound ...

  9. 图片裁剪的js有哪些(整理)

    图片裁剪的js有哪些(整理) 一.总结 一句话总结:如果用了amaze框架就去amaze框架的插件库里面找图片裁剪插件,如果没用,jcrop和cropper都不错. 1.amazeui的插件库中有很多 ...

  10. 图片裁剪功能学习小结

    图片裁剪功能学习小结 近期有需要使用图片裁剪的功能,在使用插件和自己写裁剪组件之间犹豫了很久,后来根据需求经过反复的考虑,还是自己封装吧,毕竟自己动手,丰衣足食,对吧?嗯,??????是的!最后生成裁 ...

最新文章

  1. 就微软启动盗版系统黑屏的个人看法
  2. golang匿名组合
  3. ProceedingJoinPoint pjp 获取不到方法上
  4. python常用功能_python----常用功能
  5. java socket如何请求485协议_javaSE第十五部分 网络编程(1)Socket和ServerSocket
  6. Matlab自定义函数的五种方法
  7. 如何监控 Elasticsearch 集群状态?
  8. 常见web攻击方式与防御方法
  9. 各种陷进,盘点那些坑你没商量的JDK方法
  10. Spring4-@PostConstruct和@PreDestroy注解的使用
  11. 【OFDM通信】基于matlab OFDM通信系统仿真【含Matlab源码 315期】
  12. ELK 性能(1) — Logstash 性能及其替代方案
  13. 天使和恶魔差异只在一念之间
  14. 【安卓大作业】Android Studio开发项目图书管理系统“书香驿站”
  15. 个人必备google搜索技巧
  16. Mybatis-入门程序(二)
  17. 国外广告联盟:玩转国外CPC网站作弊
  18. 图解图论介绍及应用(1):哥尼斯堡七桥
  19. RIP --- 路由信息协议
  20. pandas 筛选行 整行复制粘贴

热门文章

  1. mysql 版本号_详解MySQL并发控制及事务原理
  2. Seaborn可视化 -- 分类统计图seaborn.catplot
  3. 信用评分卡 (part 4 of 7)
  4. 北理工java分析题_2020春北理工《Java技术与应用》在线作业-1(参考)
  5. C/C++[codeup 1925]特殊排序
  6. 算法: 最大矩形面积85. Maximal Rectangle
  7. mysql索引表交换分区_MySQL交换分区的实例详解
  8. postman支持socket吗_如何使用postman测试接口webservice?
  9. CS231n李飞飞计算机视觉 神经网络训练细节part2下
  10. 【生信进阶练习1000days】day10-vcf format