c# WPF 中圖片縮放功能,滑鼠拖動位置
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:flash="clr-namespace:AxShockwaveFlashObjects;assembly=AxInterop.ShockwaveFlashObjects"
xmlns:wf="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
Loaded="WindowLoadedEvent"
WindowState="Maximized"
WindowStyle="None">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<wf:WindowsFormsHost Name="wform" Grid.RowSpan="2">
<flash:AxShockwaveFlash x:Name="flash" FSCommand="fsCommandEvent" />
</wf:WindowsFormsHost>
<Grid x:Name="IMG"
Grid.RowSpan="2"
Visibility="Hidden">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="100" />
</Grid.RowDefinitions>
<Grid.Resources>
<TransformGroup x:Key="Imageview">
<ScaleTransform />
<TranslateTransform />
</TransformGroup>
</Grid.Resources>
<ContentControl x:Name="contCtl"
Grid.RowSpan="2"
MouseLeftButtonDown="IMG1_MouseLeftButtonDown"
MouseLeftButtonUp="IMG1_MouseLeftButtonUp"
MouseMove="IMG1_MouseMove"
MouseWheel="IMG1_MouseWheel">
<Border x:Name="Imgbd">
<Image Name="IMG1"
RenderOptions.BitmapScalingMode="NearestNeighbor"
RenderTransform="{StaticResource Imageview}"
Stretch="Uniform" />
</Border>
</ContentControl>
<StackPanel Grid.Row="1"
HorizontalAlignment="Center"
Orientation="Horizontal">
<Image Name="buttonLarger"
MouseDown="button2_Click"
Source="./res/larger.png"
Stretch="Fill"
/>
<!--<Button Name="button4"
Width="80"
Height="40"
Click="button4_Click"
Content="原圖"
FontSize="24" />-->
<Image Name="buttonClose"
Source =".\res\close.png"
MouseDown="buttonClose_Click"
Stretch="Fill"
/>
<Image Name="button3"
Source =".\res\smaller.png"
MouseDown="button3_Click"
Stretch="Fill"
/>
</StackPanel>
</Grid>
</Grid>
</Window>
=======================================》》》
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace LJDX
{
/// <summary>
/// MainWindow.xaml 的互動邏輯
/// </summary>
public partial class MainWindow : Window
{
string picPath;
private bool mouseDown;
private Point mouseXY;
public MainWindow()
{
InitializeComponent();
}
//falsh訊息事件
private void fsCommandEvent(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvent e)
{
switch (e.command){
case "1":
wform.Visibility = Visibility.Collapsed;
IMG.Visibility = Visibility.Visible;
picPath = Environment.CurrentDirectory + @"\IMGS\1.jpg";
IMG1.Source = new BitmapImage(new Uri(picPath, UriKind.Absolute));
originImg();
break;
default:
break;
}
}
private void WindowLoadedEvent(object sender, RoutedEventArgs e)
{
string flashPath = Environment.CurrentDirectory + @"\FLASH\gd.swf";
flash.Movie = flashPath;
}
//圖片放大
private void button2_Click(object sender, RoutedEventArgs e)
{
IMG1.RenderTransformOrigin = new Point(0.5, 0.5);
var img = sender as ContentControl;
var group = IMG.FindResource("Imageview") as TransformGroup;
var transform1 = group.Children[1] as TranslateTransform;
var transform0 = group.Children[0] as ScaleTransform;
transform0.ScaleX += transform0.ScaleX * 2.4;
transform0.ScaleY += transform0.ScaleY * 2.4;
}
//圖片縮小
private void button3_Click(object sender, MouseButtonEventArgs e)
{
//IMG1.RenderTransformOrigin = new Point(0.5, 0.5);
//var img = sender as ContentControl;
//var group = IMG.FindResource("Imageview") as TransformGroup;
//var transform1 = group.Children[1] as TranslateTransform;
//var transform0 = group.Children[0] as ScaleTransform;
//transform0.ScaleX -= transform0.ScaleX * 0.5;
//transform0.ScaleY -= transform0.ScaleY * 0.5;
originImg();
}
//按鈕 【原圖】
private void button4_Click(object sender, RoutedEventArgs e)
{
var img = sender as ContentControl;
var group = IMG.FindResource("Imageview") as TransformGroup;
//初始化位置
var translateTrans = group.Children[1] as TranslateTransform;
translateTrans.X = 0;
translateTrans.Y = 0;
//初始化縮放比例
var scaleTrans = group.Children[0] as ScaleTransform;
scaleTrans.ScaleX = 1;
scaleTrans.ScaleY = 1;
}
private void originImg() {
var group = IMG.FindResource("Imageview") as TransformGroup;
//初始化位置
var translateTrans = group.Children[1] as TranslateTransform;
translateTrans.X = 0;
translateTrans.Y = 0;
//初始化縮放比例
var scaleTrans = group.Children[0] as ScaleTransform;
scaleTrans.ScaleX = 1;
scaleTrans.ScaleY = 1;
}
private void IMG1_MouseMove(object sender, MouseEventArgs e)
{
var img = sender as ContentControl;
if (img == null)
{
return;
}
if (mouseDown)
{
Domousemove(img, e);
}
}
private void IMG1_MouseWheel(object sender, MouseWheelEventArgs e)
{
var img = sender as ContentControl;
if (img == null)
return;
var point = e.GetPosition(img);
var group = IMG.FindResource("Imageview") as TransformGroup;
var delta = e.Delta * 0.001;
DowheelZoom(group, point, delta);
}
private void IMG1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var img = sender as ContentControl;
if (img == null)
return;
img.CaptureMouse();
mouseDown = true;
mouseXY = e.GetPosition(img);
}
private void IMG1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
var img = sender as ContentControl;
if (img == null)
return;
img.ReleaseMouseCapture();
mouseDown = false;
}
private void DowheelZoom(TransformGroup group, Point point, double delta)
{
var pointToContent = group.Inverse.Transform(point);
var transform = group.Children[0] as ScaleTransform;
if (transform.ScaleX + delta < 0.1) return;
transform.ScaleX += delta;
transform.ScaleY += delta;
var transform1 = group.Children[1] as TranslateTransform;
transform1.X = -1 * ((pointToContent.X * transform.ScaleX) - point.X);
transform1.Y = -1 * ((pointToContent.Y * transform.ScaleY) - point.Y);
}
private void Domousemove(ContentControl img, MouseEventArgs e)
{
if (e.LeftButton != MouseButtonState.Pressed)
{
return;
}
var group = IMG.FindResource("Imageview") as TransformGroup;
var transform = group.Children[1] as TranslateTransform;
var position = e.GetPosition(img);
transform.X -= mouseXY.X - position.X;
transform.Y -= mouseXY.Y - position.Y;
mouseXY = position;
}
private void buttonClose_Click(object sender, MouseButtonEventArgs e)
{
IMG.Visibility = Visibility.Collapsed;
wform.Visibility = Visibility.Visible;
}
}
}
相關推薦
c# WPF 中圖片縮放功能,滑鼠拖動位置
<Window x:Class="LJDX.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://sc
android 圖片縮放後劃屏拖動圖片與Viewpager切換Item衝突(拖動圖片的事件相應被遮蔽)問題解決
/** * 設定拖拽狀態下的Matrix * @param event */ public void setDragMatrix(MotionEvent event) { if(isZoomChanged
Python圖片中的縮放實現,以及多種尺寸icon的生成
在pillow中圖片的縮放有兩種方式,1.使用resize函式,2,使用thumbnail函式 resize函式可以縮小,也可以放大 thumbnail只能縮小,不能放大 所以,如果你只打開一次圖片,要存出多個尺寸的話,要麼,從大到小開始縮放。 要麼,使用resize.建議
Android Matrix處理ImageView中圖片縮放,平移
1,Matrix 原理簡單介紹 Matrix :矩陣,線性代數裡有介紹,結合Matrix,用於平面的縮放、平移、旋轉等操作。 首先介紹一下矩陣運算。加法和減法就不用說了,太簡單了,對應位相加就好。影象處理,主要用到的是乘法 。下面是一個乘法的公式: 在 And
java圖片縮放一,使用ImageIO代替JPEGImageEncoder
專案中 需要對使用者上傳的圖片進行壓縮或者放大處理 在網上找的例項中都是使用的JPEGImageEncoder ( com.sun.image.codec.jpeg.JPEGImageEncoder )類進行的。但是從jdk7 開始 這個類已經被移除了。雖能網友也提供了
Android Bitmap圖片縮放優化,用canvas替代Matrix進行縮放,解決一些錯我
前面用Matrix來縮放Bitmap,發現有些情況下會丟擲錯誤,導致圖片空白。 /** * 縮放 * * @param bm * @param newWidth * @param newHeight *
圖片居中按比例顯示、鼠標滾動縮放、鼠標拖動平移
cal mar abs head max his return mouseup 兼容模式 1.為了居中顯示,考慮到div不好設置,用table做邊框 縮放原理:調整圖片寬高、定位left、top; 平移:鼠標事件位置、定位left、top。 目前貼出實現代碼,具體研究內容再
關於Unity中UGUI圖片Image實現仿視頻播放窗口的四角縮放功能
重置 assert clas () strong unity 操作 寬度 腳本 應用方法:將下面腳本掛載在需要實現四角縮放功能的UI圖片上即可. 自定義拖拽精度(與邊界距離多少內觸發)m_validityWidth. 1 /********************
Android程式碼中動態設定圖片的大小(自動縮放),位置
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" andr
圖片點擊放大,再次點擊回到原來狀態(圖片縮放)
點擊事件 nbsp 尺寸 狀態 調用 ges cnblogs view tps 1.生成一個類,繼承自UIView(ScalePictures),在這個類的.h中聲明一個類方法: +(void)scanBigImageView:(UIImageView *)currentI
php圖片上傳類(支持縮放、裁剪、圖片縮略功能)
php圖片上傳類(支持縮放、裁剪、圖片縮代碼: /** * @author [Lee] <[<[email protected]>]> * 1、自動驗證文件是表單提交的文件還是base64流提交的文件 * 2、驗證圖片類型是否合法 * 3、驗證圖片尺寸是否合法 * 4、驗證圖片大小是否合法
AE開發之默認滾輪縮放功能反置(C#修改註冊表數據)
arcgis closed wheel engine user 直接 clas for sem ArcMap默認的滾輪縮放是向下放大,向上縮小 如果想修改成向上放大,向下縮小,直接在ArcMap-Customize-ArcMap Options裏, 將最下面的Mouse W
js實現移動端圖片預覽:手勢縮放, 手勢拖動,雙擊放大...
在屏幕上 turn cit format 基礎上 set 邊距 點擊 點擊事件 前言本文將介紹如何通過js實現移動端圖片預覽,包括圖片的 預覽模式,手勢縮放,手勢拖動,雙擊放大等基本功能;
如何使用CAD編輯器中的框選縮放功能?
如何使用CAD編輯器中的框選縮放功能?現在隨著人們生活水平的不斷提高,越來越多的人們開始對住房有了更多的要求,所有隨著CAD行業的發展,也有越來越多的小夥伴們開始加入到CAD這個行業中來,日常的工作就是編輯出各種CAD圖紙,但是在編輯CAD圖紙的時候,也會遇到許許多多的問題,那就是如何使用CAD編輯器中的框選
Angular圖片縮放指令(手機端,手動放大縮小)
Angular手機端圖片放大縮小 首先在controller中寫一個指令,Angular中使用.directive宣告一個指令 var demoForDirective = angular.module('demoForDirective', ['demoFor
Thumbnailator圖片處理(圖片縮放,區域裁剪,水印,旋轉,保持比例)
Thumbnailator 是一個優秀的圖片處理的Google開源Java類庫。處理效果遠比Java API的好。從API提供現有的影象檔案和影象物件的類中簡化了處理過程,兩三行程式碼就能夠從現有圖片生
PHP例項————圖片等比例縮放功能
在網站開發的過程中,經常要對一些圖片進行一些處理,比如說縮放,裁剪,加水印等等。當然這些功能不僅僅可以用在開發網站的過程中,平時需要對圖片做一些處理的時候,把這個功能封裝到函式中去,要處理圖片的時候,
使用awt中的類操作圖片縮放、變圓透明、水印、合併
本文是因為以前寫過的一個公眾號,需要做這些操作,現在總結一下。當時對awt只限於瞭解,用到的時候看了看文件和別人的程式碼,做了幾次測試後寫的一個整合工具。 本文會依據先後順序介紹使用awt的工具類對圖片進行縮放、變圓透明、合併、水印,雖然每個都是分步的,但
ASP.NET中怎樣實現圖片驗證碼功能,並且點選圖片會重新整理
------ 基本思路: 圖片的src=後臺的一個函式,此函式返回按照一定規則生成的圖片檔案流。 然後此圖片即可生成。 那麼怎樣重新整理驗證碼呢,這是個問題。 因為給圖片的src賦了值之後,想要更換一個圖片,那麼src的那個函式必須再執行一次才行。 <img src=
viewPager+photoView實現圖片輪播和手勢縮放功能 支援手勢縮放的imageView 如何實現相簿左右滑動和手勢縮放 如何讓圖片自適應控制元件大小 photoView如何使用(上)
import uk.co.senab.photoview.IPhotoView; import uk.co.senab.photoview.PhotoViewAttacher; import uk.co.senab.photoview.PhotoViewAttacher.OnMatrixChangedList