原文 WindowsPhone8中实现圆形图片的生成显示

很多软件中(比如QQ)用到了许多圆形图片,作为用户头像等等,原始图片往往是方形的,那么怎么样将方形的图片显示成圆形呢?

一种方法是当背景为固定纯色的时候,可以使用同背景色的边框遮罩,这种方法适用性小,这里不再赘述。

我的做法是使用ArcSegment的功能来实现圆形图片的显示,ArcSegment派生自PathSegment,“~派生自 PathSegment 的类(例如 ArcSegment、BezierSegment 和 LineSegment),表示特定类型的几何图形段。”

PathSegment微软文档介绍

思路来源于这篇文章:WP8实现图片任意形状剪裁(C#代码实现)

主要实现代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
PathGeometry pg = new PathGeometry();
 
PathFigure pf1 = new PathFigure();
pf1.StartPoint = new Point(0, height / 2);
pf1.Segments.Add(new ArcSegment()
{
    IsLargeArc = true,
    Point = new Point(width, height / 2),
    Size = new Size(width / 4, height / 4),
});
pg.Figures.Add(pf1);
 
PathFigure pf2 = new PathFigure();
pf2.StartPoint = new Point(0, height / 2);
pf2.Segments.Add(new ArcSegment()
{
    SweepDirection = SweepDirection.Clockwise,
    IsLargeArc = true,
    Point = new Point(width, height / 2),
    Size = new Size(width / 4, height / 4),
});
pg.Figures.Add(pf2);
 
image.Clip = pg;

封装好的一个圆形图片控件:

CircleImage

使用方法

1:添加CircleImage.dll引用

2:xmlns:CircleImage="clr-namespace:CircleImage;assembly=CircleImage"

3:<CircleImage:CircleImage Source="test.jpg" Width="400" Height="400"/>

WindowsPhone8中实现圆形图片的生成显示的更多相关文章

  1. 【WinRT】【译】【加工】在 XAML 中制作圆形图片

    原文:[WinRT][译][加工]在 XAML 中制作圆形图片 原文地址:http://timheuer.com/blog/archive/2015/05/06/making-circular-ima ...

  2. Glide加载圆形图片第一次只显示默认图片

    Glide加载圆形图,又设置了默认图,很多时候第一次加载的时候只显示默认图.下面的方案可以解决.\ Glide.with(AudioDetailActivity.this) .load(cover) ...

  3. 在android中画圆形图片的几种办法

    在开发中常常会有一些需求,比方显示头像,显示一些特殊的需求,将图片显示成圆角或者圆形或者其它的一些形状. 可是往往我们手上的图片或者从server获取到的图片都是方形的.这时候就须要我们自己进行处理, ...

  4. 关于Latex中插入Visio图片文字不显示的问题

    经过探索,将Visio保存为pdf格式是最完美的解决方式,因为pdf文件保存了所有格式和字体信息. Visio输出pdf时要使其符合PDF/A标准.如果包含Visio的多余信息,就会在一些低版本Lat ...

  5. Android Glide+CircleImageView实现加载圆形图片列表

    需求:要在列表中实现圆形图片的显示,控件可能和加载库会存在冲突 先上代码,至于其中源码,以后有空再分析 MainActivity public class MainActivity extends A ...

  6. spring从服务器磁盘读取图片,然后显示于前端页面上

    需求是,前台通过传参,确定唯一图片,然后后台在服务器磁盘中读取该图片,然后显示于前台页面上. 后台代码: @RequestMapping("unit/bill/showeinvoice&qu ...

  7. php课程 8-28 php如何绘制生成显示图片

    php课程 8-28 php如何绘制生成显示图片 一.总结 一句话总结:gd库轻松解决 1.php图片操作生成的图的两种去向是什么? 一种在页面直接输出,一种存进本地磁盘 2.php操作图片的库有哪些 ...

  8. Qt中在图片上叠加显示文字

    Qt中在图片上叠加显示文字   QCustLabel::QCustLabel(QWidget *parent):QLabel(parent){ setPixmap(QPixmap(QString::f ...

  9. Android imageview显示圆形图片

    需要ImageView显示圆形图片做法如下 public static Bitmap toRoundCorner(Bitmap bitmap, float ratio) { System.out.pr ...

随机推荐

  1. [转]Mysql自动备份并保存近15天记录脚本

    本脚本主要现实在CentOS中实现对MySQL数据库的备份和保留最近十五天的备份文件.避免太多无用陈旧的备份占用空间. #!/bin/bash id='root' #用户名 pwd='123123' ...

  2. ThinkPHP验证码类

    //ThinkPHP验证码类使用$config = array( 'fontSize' => 30, // 验证码字体大小 'length' => 3, // 验证码位数 'useNois ...

  3. 面向对象程序设计-C++ Operator Overloading & Type conversion (Static)【第十一次上课笔记】

    本次上课继续讲解了 [ ] .-> 等运算符重载的具体例子 也讲解了C++单个参数的类的类型转换的案例 最后稍微提到了 static 的第三种作用:静态数据成员 具体详解我都已注释出来了,大家可 ...

  4. 笔记之Cyclone IV第一卷第三章器件中的存储器模块

    嵌入式存储器结构由一列列 M9K 存储器模块组成,通过对这些 M9K 存储器模块进行配置,可以实现各种存储器功能,例如:RAM.移位寄存器. ROM 以及FIFO 缓冲器. M9K 存储器模块支持以下 ...

  5. 查看死锁原因 /data/anr/traces.txt

    Android ANR这个错误大家并不陌生,但是从Android 2.2开始出错的ANR信息会自动上传给Google进行系统分析改进,当然了你的应用ANR错误其实保存在一个文件中,在/data/anr ...

  6. PHP - 发送短信

    1.购买服务 我购买的是在百度进行推广的API服务.按照要求进行购买就好,之后获取自己的apikey. 2.将提供的代码修改后集成到项目中: <?php /** * * * 发送短信 * * * ...

  7. two sets of Qt binaries into the same process的解决办法

    突然出现了这样问题,吓死我,然后只是把原来编译好的app里面所有的东西删除再编译就好了. 如果删除后不行,可以试试后面的截图所说,反正我是没有试过的 Starting /Qtwork/build-te ...

  8. JQuery遍历json数组的3种方法

    这篇文章主要介绍了JQuery遍历json数组的3种方法,本文分别给出了使用each.for遍历json的方法,其中for又分成两种形式,需要的朋友可以参考下 一.使用each遍历 $(functio ...

  9. 用PowerMockito来mock私有方法(转)

    话说我们做的所谓的接口测试真的是不伦不类啊,测的是controller层,那叫接口木??!!可是老大们说写的是接口测试,那就接口吧! 自接手写这个接口测试不久,很多人,包括一个关系比较好的架构师就跟我 ...

  10. 使用【百度云推送】第三方SDK实现推送功能具体解释

    之前介绍过怎样使用shareSDK实现新浪微博分享功能,今天介绍怎样使用百度云推送SDK实现Android手机后台推送功能. 执行效果例如以下 第一步,假设使用百度的SDK,当然要先成为百度的开发人员 ...