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

目錄

柚子快報(bào)激活碼778899分享:WPF 控件的縮放和移動(dòng)

柚子快報(bào)激活碼778899分享:WPF 控件的縮放和移動(dòng)

http://yzkb.51969.com/

WPF 控件的縮放和移動(dòng)

1.頁(yè)面代碼

x:Name="viewbox"

MouseDown="viewbox_MouseDown"

MouseMove="viewbox_MouseMove"

MouseWheel="Viewbox_MouseWheel">

ScaleTransform 用于進(jìn)行縮放

TranslateTransform 用于進(jìn)行位置的移動(dòng)

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

ContentControl 可以對(duì)超過(guò)容器的部分進(jìn)行剪切,這樣就不會(huì)覆蓋到其他控件了

2.后臺(tái)代碼

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;

}

///

/// 移動(dòng)圖片

///

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)相對(duì)于圖片的位置

Point currentMousePosition = e.GetPosition(image);

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

double deltaX = currentMousePosition.X - lastMousePosition.X;

double deltaY = currentMousePosition.Y - lastMousePosition.Y;

TranserX += deltaX / 10;

TranserY += deltaY / 10;

}

}

}

3.總結(jié)

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

2023/11/20

柚子快報(bào)激活碼778899分享:WPF 控件的縮放和移動(dòng)

http://yzkb.51969.com/

推薦閱讀

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

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

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

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

發(fā)布評(píng)論

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

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄