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;
}
}
}