发现有些小程序设置头像的处理似乎有点问题,特别是不断的放大、缩小后,会出现图片只显示出一半。主要问题是这些程序对于图片的边界判断存在问题,从而导致一些问题。
本文主要实现WPF下用户头像的设置处理,实现功能是用户选择一张图片该例子可以对选择的图片进行缩放和移动操作,最后方块内的部分,会被裁剪出来,最后以圆形头像显示出来。
启动后初始画面如下所示:
点击设置头像后,会显示对话框,点击导入按钮,选择好自己想要设置的图片,如下所示,可以用鼠标左键选中图片进行移动,使用滚轮进行图片的缩放。
设置好自己满意的图片后,点击ok即可。初始加载的图片,程序会等比缩放图片,让其完全的填充200×200这么大正方形区域,进行放大时,是以正方形的中心进行放大,
而缩小时,优先采用中心进行缩小,当某个边的尺寸快要不足,不能再以中心缩放,则以那一条边作为基准进行缩放,从而提高了用户的友好交互。
主要的代码如下,边界判断的思路是共通的,用其他语言写这样的程序,也得进行这样的判断。
移动图片时的处理逻辑
private void editingPhoto_MouseMove(object sender, MouseEventArgs e)
{
if (this.isMouseLeftButtonDown)
{
Point position = e.GetPosition(this.editingPhoto);
T