2019独角兽企业重金招聘Python工程师标准>>>

随着最近TWaver .NET的正式发布,有不少使用过TWaver的Java,Web或Flex的老客户也可以尝试在项目中使用TWaver .NET,虽然TWaver .NET既有TWaver.Wpf.dll又有TWaver.Silverlight.dll两个开发包,同时支持WPF和Silverlight两种方式,用户可以根据自己需要任意挑选,不过根据我们最近走访全国各地目前使用TWaver .NET的仅二十家客户统计,采用Silverlight的解决方案比例还是居多,虽然WPF功能更加强大,但毕竟Silverlight通过很轻量的6m多插件就可以跑在windows,mac甚至是 symbian和windows phone 7 的mobile领域,发布如此轻量,更新如此轻松,部署如此广泛,何乐而不为呢。

扯远了,回到今天主题,不少用过TWaver其他版本的老客户常抱怨,TWaver其他版本总是那么如此让人省心,让我们体验到开发GUI真的也能做到Don’t Repeat Yourself (DRY) ,为什么TWaver .NET上注册图片需要我提供width和height信息TWaver.Utils.RegisterImageByImageSource(string name, ImageSource imageSource, double width, double height)呢,这问题要怪应该怪微软,为什么Silverlight上非得将Image绑定上source并且真是display出来后才能真的得到width和height信息,当组件还没呈现时你去获取image的宽高只能得到0。

在此我替微软向去年当TWaver .NET还在beta中就已经开始在项目中预言和使用客户道歉,我们没有彻底做到DRY,不过始终坚持最大程序减少用户工作量原则的TWaver开发团队,在正式TWaver .NET 1.0发布时提供了让人更舒心的RegisterPNGImage(string name, Uri uri)函数,是的,你不用在告诉TWaver宽高了,TWaver会自动的去获取,至于如何获取很多同学很感兴趣,以下实现代码原理很简单我就不解释了,总之条条道路通罗马,Silverlight不提供的我们也能走出自己的路

internal static void RegisterPNGImage(string name, Uri uri){StreamResourceInfo resourceInfo = Application.GetResourceStream(uri);if (resourceInfo != null && resourceInfo.Stream != null){BitmapImage image = new BitmapImage();
#if SILVERLIGHTimage.SetSource(resourceInfo.Stream);
#elseimage.BeginInit();image.StreamSource = resourceInfo.Stream;image.EndInit();
#endifresourceInfo.Stream.Position = 0;byte[] header = new byte[8];resourceInfo.Stream.Read(header, 0, header.Length);if (header[0] == 0x89 &&header[1] == 0x50 && // Pheader[2] == 0x4E && // Nheader[3] == 0x47 && // Gheader[4] == 0x0D && // CRheader[5] == 0x0A && // LFheader[6] == 0x1A && // EOFheader[7] == 0x0A)   // LF{byte[] buffer = new byte[16];resourceInfo.Stream.Read(buffer, 0, buffer.Length);Array.Reverse(buffer, 8, 4);Array.Reverse(buffer, 12, 4);double width = BitConverter.ToInt32(buffer, 8);double height = BitConverter.ToInt32(buffer, 12);resourceInfo.Stream.Close();ImageUtils.RegisterImageAsset(name, new ImageAsset(image, width, height));return;}resourceInfo.Stream.Close();}new Exception("Can not load PNG Image '" + name + "' URI: " + uri);}

转载于:https://my.oschina.net/monolog/blog/404817

.NET中如何得到图片大小相关推荐

  1. 在WORD中批量修改图片大小

    今天在word中批量修改图片时发现了word一个强大的功能,不多说废话,直接附上步骤: 1.首先按一定的顺序将图片插入word当中: 2.点击"视图"----"宏&quo ...

  2. matlab 中图的大小_关于matlab绘图中字体及图片大小等的设置

    关于 matlab 绘图中字体及图片大小等的设置 1. 设置坐标轴上下限: axis([xmin,xmax,ymin,ymax]); 2. 设置图片大小: set(gcf,'Position',[x1 ...

  3. dedecms中[field:imglink/]图片大小问题解决办法

    今天新站调试模板的时候,发现DEDE新的标签[field:imglink/]虽然比以前简化了很多,但是图片大小全是默认的120X120,用了很多方法解决不了! 上DEDECMS 官方MS也没有找到答案 ...

  4. matlab 中图字体设置,关于matlab绘图中字体及图片大小等的设置

    1.  设置坐标轴上下限:axis([xmin,xmax,ymin,ymax]); 2.  设置图片大小:set(gcf,'Position',[x1,y1,dx,dy]); x1和y1是图的左下角坐 ...

  5. Word中批量调整图片大小

    当一个文档中图片较多,又需要调整图片大小时,这时可以通过"宏"执行代码来批量调整. 打开一个Word文档. "Alt+F8"键打开宏. 设置"宏名&q ...

  6. MATLAB中如何设置图片大小?

    在学术论文或学术报告中,往往有大量的图片,如何编辑这些图片是一件不小的任务.编辑图片一方面是因为杂志社或论文本身对图片大小有要求,另一方面也是为了文章的美观.我见过很多同学在用MATLAB画完图后直接 ...

  7. CTF中WINHex修改图片大小——bugku杂项题-隐写

    在CTF中有图片中隐藏大小,而看不到整个图片,下面讲解一下在winhex中修改图片的大小. 下面安bugku中的一个隐写题看 第二行的0-3列是代表图片的宽,00 00 01 F4是十六进制的,转化成 ...

  8. 批量调整WPS中插入的图片大小

    https://3g.163.com/dy/article/DF71NH650511PTTN.html https://www.zhihu.com/question/23242989 WPS怎么创建宏 ...

  9. 如何在word中批量修改图片大小

    在将文件夹中的图像复制到word中时发现,图像右侧显示不全,需要对图像尺寸进行设置 1.直接按[Alt+F8]打开 "宏"对话框,在"宏名"文本框中输入宏名称& ...

  10. 网页优化中,如果图片大小不做定义,则页面需要重新渲染,速度受到影响

    优化浏览器渲染 指定图片尺寸 为页面中所有图片指定宽度和高度可以消除不必要的reflows和重新绘制页面[repaints],使页面渲染速度更快. 当浏览器勾画页面时,它需要能够流动的,如图片这样的可 ...

最新文章

  1. deepstream-开放式实时服务器
  2. 一个成功敏捷团队的失败历程
  3. Struts 2配置详解
  4. iOS 4的无线部署(Xcode3.2 及 Xcode4.2 图文解说)
  5. 【渝粤教育】21秋期末考试工程项目管理10324k2
  6. FCOS: A Simple and Strong Anchor-free Object Detector
  7. C++设计模式-中介者模式
  8. RefreshLayout刷新组件,有详细注释适合使用和中高端学习
  9. thinkPHP的Excel插件
  10. android imageview 等比例放大缩小,imageView的使用(进行原样的保持和按照比例的缩放:)...
  11. 相机标定(三)—— 正交投影和透视投影变换
  12. sql 创建表、删除表 增加字段 删除字段操作
  13. 主进程和子进程_Python - 进程-线程-协程
  14. CTF常见的php函数
  15. TS-Function
  16. 用手机打开word图表位置很乱_干货 | 论文格式调半天?Word攻略帮你统统都搞定...
  17. 校园网下实验室的服务器如何实现远程登录
  18. springBoot 文件压缩加密
  19. ESP32-C2 Homekit烧录示例
  20. 深度学习-历史发展历程

热门文章

  1. SQL 查询总是先执行SELECT语句吗?你们都错了!
  2. 新网杯top1方案:手把手构建中文语音合成模型!
  3. 数据分析之Pandas合并操作总结
  4. 爱可可推荐!关于竞赛思路,方法和代码实践,Datawhale数据竞赛Baseline开源分享!...
  5. ICCV 2021 | 简而优:用分类器变换器进行小样本语义分割
  6. AAAI 2021: 微调对小样本学习究竟起何作用?搜索或是解决方案
  7. 一个非常好用的 Python 魔法库
  8. 重上热搜!北师大教授:给非洲留学生1年10万奖学金真的不算多!
  9. 热榜第一!GitHub 标星 5.6w,如何用 Python 实现所有算法?
  10. 手把手教你研发自己的智能无人机 谢谢您呀!