欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:WPF 控件的縮放和移動

柚子快報激活碼778899分享:WPF 控件的縮放和移動

http://yzkb.51969.com/

WPF 控件的縮放和移動

1.頁面代碼

x:Name="viewbox"

MouseDown="viewbox_MouseDown"

MouseMove="viewbox_MouseMove"

MouseWheel="Viewbox_MouseWheel">

ScaleTransform 用于進行縮放

TranslateTransform 用于進行位置的移動

ViewBox中可以放入不同的控件不光可以是圖片

ContentControl 可以對超過容器的部分進行剪切,這樣就不會覆蓋到其他控件了

2.后臺代碼

public partial class ImageSuper : UserControl

{

public ImageSuper()

{

InitializeComponent();

}

public ImageSource ImageSource

{

get { return (ImageSource)GetValue(ImageSourceProperty); }

set { SetValue(ImageSourceProperty, value); }

}

public static readonly DependencyProperty ImageSourceProperty =

DependencyProperty.Register("ImageSource", typeof(ImageSource), typeof(ImageSuper), null);

public double Scale

{

get { return (double)GetValue(ScaleProperty); }

set { SetValue(ScaleProperty, value); }

}

public static readonly DependencyProperty ScaleProperty =

DependencyProperty.Register("Scale", typeof(double), typeof(ImageSuper),

new PropertyMetadata(default(double), new PropertyChangedCallback(ScalePropertyChanged)));

public double TranserX

{

get { return (double)GetValue(TranserXProperty); }

set { SetValue(TranserXProperty, value); }

}

public static readonly DependencyProperty TranserXProperty =

DependencyProperty.Register("TranserX", typeof(double), typeof(ImageSuper),

new PropertyMetadata(default(double), new PropertyChangedCallback(TranserPropertyChanged)));

public double TranserY

{

get { return (double)GetValue(TranserYProperty); }

set { SetValue(TranserYProperty, value); }

}

public static readonly DependencyProperty TranserYProperty =

DependencyProperty.Register("TranserY", typeof(double), typeof(ImageSuper),

new PropertyMetadata(default(double), new PropertyChangedCallback(TranserPropertyChanged)));

public static void ScalePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)

{

(d as ImageSuper).DoScale();

}

public static void TranserPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)

{

(d as ImageSuper).DoMove();

}

///

/// 縮放圖片。最小為0.1倍,最大為0倍

///

private void DoScale()

{

// 限制最大、最小縮放倍數(shù)

if (scaler.ScaleX + Scale < 0.1 || scaler.ScaleX + Scale > 80) return;

scaler.ScaleX = Scale;

scaler.ScaleY = Scale;

}

///

/// 移動圖片

///

private void DoMove()

{

transer.X = TranserX;

transer.Y = TranserY;

}

private void Viewbox_MouseWheel(object sender, MouseWheelEventArgs e)

{

var point = e.GetPosition(viewbox);

var delta = e.Delta * 0.002;

Scale += delta;

TranserX -= point.X * delta;

TranserY -= point.Y * delta;

}

private Point lastMousePosition;

private void viewbox_MouseDown(object sender, MouseButtonEventArgs e)

{

Point currentMousePosition = e.GetPosition(image);

lastMousePosition = currentMousePosition;

}

private void viewbox_MouseMove(object sender, MouseEventArgs e)

{

if (e.LeftButton == MouseButtonState.Pressed)

{

// 獲取鼠標(biāo)相對于圖片的位置

Point currentMousePosition = e.GetPosition(image);

// 獲取鼠標(biāo)在X軸和Y軸上的移動距離

double deltaX = currentMousePosition.X - lastMousePosition.X;

double deltaY = currentMousePosition.Y - lastMousePosition.Y;

TranserX += deltaX / 10;

TranserY += deltaY / 10;

}

}

}

3.總結(jié)

目前這個是直接做成了第三方控件的樣式使用的,還有一個旋轉(zhuǎn)的屬性但是因為項目不需要所有就沒有加進去.還有一個自適應(yīng)大小的功能就是把Scale 的值改為1,TranserX 和TranserY 的值改為0就可以了.

2023/11/20

柚子快報激活碼778899分享:WPF 控件的縮放和移動

http://yzkb.51969.com/

推薦閱讀

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19217661.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄