using System;
|
using System.Collections.Generic;
|
using System.Text;
|
|
namespace Shared.Phone.UserCenter
|
{
|
/// <summary>
|
/// 一个能够进行裁剪图片的控件
|
/// </summary>
|
public class CutPictureControl : ImageView
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
/// 选择图片的事件
|
/// </summary>
|
public Action<string> SelectPictrueEvent = null;
|
|
#endregion
|
|
#region ■ 初始化_____________________________
|
|
/// <summary>
|
/// 一个能够进行裁剪图片的控件
|
/// </summary>
|
/// <param name="saveFullFileName">保存裁剪图片的文件名(全路径)</param>
|
/// <param name="i_Width">宽度</param>
|
/// <param name="i_Height">高度</param>
|
/// <param name="real">是否计算真实值</param>
|
public CutPictureControl(string saveFullFileName, int i_Width, int i_Height, bool real = true)
|
{
|
if (real == true)
|
{
|
i_Width = Application.GetMinRealAverage(i_Width);
|
i_Height = Application.GetMinRealAverage(i_Height);
|
}
|
this.Height = i_Height;
|
this.Width = i_Width;
|
|
this.MouseUpEventHandler += (sender, e) =>
|
{
|
//显示获取图片来源的方式
|
this.ShowGetPictrueWayMenu(saveFullFileName);
|
};
|
}
|
|
#endregion
|
|
#region ■ 显示获取图片来源的方式_____________
|
|
/// <summary>
|
/// 显示获取图片来源的方式
|
/// </summary>
|
/// <param name="saveFullFileName">保存裁剪图片的文件名(全路径)</param>
|
private void ShowGetPictrueWayMenu(string saveFullFileName)
|
{
|
//自定义菜单控件
|
var form = new PictrueWayMenuControl();
|
form.AddForm();
|
form.SelectPictrueEvent += (selectPic) =>
|
{
|
try
|
{
|
if (System.IO.File.Exists(saveFullFileName) == true)
|
{
|
System.IO.File.Delete(saveFullFileName);
|
}
|
//移动文件
|
System.IO.File.Move(selectPic, saveFullFileName);
|
|
//改变图片
|
this.ImagePath = saveFullFileName;
|
//调用回调函数
|
this.SelectPictrueEvent?.Invoke(saveFullFileName);
|
}
|
catch (Exception ex)
|
{
|
//出现未知错误
|
var alert = new ShowMsgControl(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.uUnKnownError));
|
alert.Show();
|
//Log
|
HdlLogLogic.Current.WriteLog(ex);
|
}
|
};
|
}
|
|
#endregion
|
|
#region ■ 控件摧毁___________________________
|
|
/// <summary>
|
/// 控件摧毁
|
/// </summary>
|
public override void RemoveFromParent()
|
{
|
this.SelectPictrueEvent = null;
|
|
base.RemoveFromParent();
|
}
|
|
#endregion
|
|
#region ■ 菜单控件___________________________
|
|
/// <summary>
|
/// 菜单控件
|
/// </summary>
|
private class PictrueWayMenuControl : DialogCommonForm
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
/// 选择图片的事件
|
/// </summary>
|
public Action<string> SelectPictrueEvent = null;
|
|
#endregion
|
|
#region ■ 初始化_____________________________
|
|
/// <summary>
|
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
/// </summary>
|
public void ShowForm()
|
{
|
var frameBack1 = new FrameLayoutControl();
|
frameBack1.UseClickStatu = false;
|
frameBack1.Y = Application.GetRealHeight(1420);
|
frameBack1.Gravity = Gravity.CenterHorizontal;
|
frameBack1.RadiusEx = 12;
|
frameBack1.Width = Application.GetRealWidth(1034);
|
frameBack1.Height = Application.GetRealHeight(300);
|
frameBack1.BackgroundColor = UserCenterColor.Current.White;
|
bodyFrameLayout.AddChidren(frameBack1);
|
|
//拍照
|
var btnTakePhone = new NormalViewControl(900, 156, true);
|
btnTakePhone.Gravity = Gravity.CenterHorizontal;
|
btnTakePhone.TextAlignment = TextAlignment.Center;
|
btnTakePhone.TextColor = 0xff0075ff;
|
btnTakePhone.TextSize = 17;
|
btnTakePhone.TextID = R.MyInternationalizationString.uTakePictrue;
|
frameBack1.AddChidren(btnTakePhone, ChidrenBindMode.NotBind);
|
btnTakePhone.ButtonClickEvent += (sender, e) =>
|
{
|
//关闭界面
|
this.CloseForm();
|
//通过相机拍照裁剪
|
CropImage.TakePicture((imagePath) =>
|
{
|
if (string.IsNullOrEmpty(imagePath) == false)
|
{
|
//调用回调函数
|
this.SelectPictrueEvent(imagePath);
|
}
|
this.SelectPictrueEvent = null;
|
}, "HdlPicture");
|
};
|
|
//线
|
var btnLine = new NormalViewControl(frameBack1.Width, ControlCommonResourse.BottomLineHeight, false);
|
btnLine.BackgroundColor = UserCenterColor.Current.ButtomLine;
|
btnLine.Y = btnTakePhone.Bottom;
|
frameBack1.AddChidren(btnLine, ChidrenBindMode.NotBind);
|
//从相册中选择
|
var btnAlbum = new NormalViewControl(900, 144, true);
|
btnAlbum.Y = btnLine.Bottom;
|
btnAlbum.Gravity = Gravity.CenterHorizontal;
|
btnAlbum.TextAlignment = TextAlignment.Center;
|
btnAlbum.TextColor = 0xff0075ff;
|
btnAlbum.TextSize = 17;
|
btnAlbum.TextID = R.MyInternationalizationString.uGetPictrueFromAlbum;
|
frameBack1.AddChidren(btnAlbum, ChidrenBindMode.NotBind);
|
btnAlbum.ButtonClickEvent += (sender, e) =>
|
{
|
//关闭界面
|
this.CloseForm();
|
//从相册选择图片裁剪
|
CropImage.SelectPicture((imagePath) =>
|
{
|
if (string.IsNullOrEmpty(imagePath) == false)
|
{
|
//调用回调函数
|
this.SelectPictrueEvent(imagePath);
|
}
|
this.SelectPictrueEvent = null;
|
}, "HdlPicture");
|
};
|
|
var frameBack2 = new FrameLayoutControl();
|
frameBack2.UseClickStatu = false;
|
frameBack2.Y = frameBack1.Bottom + Application.GetRealHeight(23);
|
frameBack2.Gravity = Gravity.CenterHorizontal;
|
frameBack2.RadiusEx = 12;
|
frameBack2.Width = Application.GetRealWidth(1034);
|
frameBack2.Height = Application.GetRealHeight(156);
|
frameBack2.BackgroundColor = UserCenterColor.Current.White;
|
bodyFrameLayout.AddChidren(frameBack2);
|
//取消
|
var btnCancel = new NormalViewControl(900, 156, true);
|
btnCancel.Gravity = Gravity.CenterHorizontal;
|
btnCancel.TextAlignment = TextAlignment.Center;
|
btnCancel.TextColor = 0xff0075ff;
|
btnCancel.TextSize = 17;
|
btnCancel.TextID = R.MyInternationalizationString.uCancel;
|
frameBack2.AddChidren(btnCancel, ChidrenBindMode.NotBind);
|
btnCancel.ButtonClickEvent += (sender, e) =>
|
{
|
this.SelectPictrueEvent = null;
|
//关闭界面
|
this.CloseForm();
|
};
|
}
|
|
#endregion
|
}
|
|
#endregion
|
}
|
}
|