文档详情

基于WPF实现裁剪图像功能.docx

发布:2025-05-11约2.36万字共23页下载文档
文本预览下载声明

基于WPF实现裁剪图像功能

VisualStudio2025

使用Canvas展示选择的裁剪图片

使用4个Rectangle设置未选中区域分别是左上右下

中间展示当前的裁剪区域使用了Border移动

左右移动使用Canvas.SetLeft上下移动使用Canvas.SetTopBorder获取裁剪区域获取GetLeft、GetTop、Border的Width与Height

拉伸Border使用了之前截图控件使用的装饰器ScreenCutAdorner

新增装饰器不允许拉伸超出Canvas画布

实现代码

1)新建CropImage.cs控件代码如下:

using?System;

using?System.Windows;

using?System.Windows.Controls;

using?System.Windows.Documents;

using?System.Windows.Input;

using?System.Windows.Media;

using?System.Windows.Media.Imaging;

using?System.Windows.Shapes;

using?WPFDevelopers.Helpers;

namespace?WPFDevelopers.Controls

????[TemplatePart(Name?=?CanvasTemplateName,?Type?=?typeof(Canvas))]

????[TemplatePart(Name?=?RectangleLeftTemplateName,?Type?=?typeof(Rectangle))]

????[TemplatePart(Name?=?RectangleTopTemplateName,?Type?=?typeof(Rectangle))]

????[TemplatePart(Name?=?RectangleRightTemplateName,?Type?=?typeof(Rectangle))]

????[TemplatePart(Name?=?RectangleBottomTemplateName,?Type?=?typeof(Rectangle))]

????[TemplatePart(Name?=?BorderTemplateName,?Type?=?typeof(Border))]

????public?class?CropImage?:?Control

????{

????????private?const?string?CanvasTemplateName?=?PART_Canvas;

????????private?const?string?RectangleLeftTemplateName?=?PART_RectangleLeft;

????????private?const?string?RectangleTopTemplateName?=?PART_RectangleTop;

????????private?const?string?RectangleRightTemplateName?=?PART_RectangleRight;

????????private?const?string?RectangleBottomTemplateName?=?PART_RectangleBottom;

????????private?const?string?BorderTemplateName?=?PART_Border;

????????private?BitmapFrame?bitmapFrame;

????????private?Rectangle?_rectangleLeft,?_rectangleTop,?_rectangleRight,?_rectangleBottom;

????????private?Border?_border;

????????private?Canvas?_canvas;

????????public?ImageSource?Source

????????{

????????????get?{?return?(ImageSource)GetValue(SourceProperty);?}

????????????set?{?SetValue(SourceProperty,?value);?}

????????}

????????public?static?readonly?DependencyProperty?SourceProperty?=

????????????DependencyP

显示全部
相似文档