wpf放大镜
2009-10-04 10:33
405 查看
<Window x:Class="byWpfTest.Window5"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window5" Height="757" Width="709" Loaded="Window_Loaded">
<!--最外区域快-->
<Grid PreviewMouseMove="Grid_PreviewMouseMove">
<!--显示区域-->
<Grid Name="showGrid">
<Grid.RowDefinitions>
<RowDefinition Height="100*" />
<RowDefinition Height="98*" />
<RowDefinition Height="521*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="56*" />
<ColumnDefinition Width="272*" />
<ColumnDefinition Width="228*" />
<ColumnDefinition Width="131*" />
</Grid.ColumnDefinitions>
<Button Height="23" Margin="14,0,3,4" Name="butto3" VerticalAlignment="Bottom" Grid.Column="1">Button</Button>
<Label Margin="14,39,88,33" Name="label1" Grid.Column="1">Label</Label>
<Label Margin="122,26,43,46" Name="lblText" Grid.Column="1">Labefdsfdsfsdfdsfdsfdsl</Label>
</Grid>
<!--放大镜-->
<Grid Name="myGrid" >
<Canvas Name="canvas" VerticalAlignment="Top" HorizontalAlignment="Left">
<Line StrokeThickness="30" X1="140" X2="270" Y1="135" Y2="260" >
<Line.Stroke>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Offset=" 0" Color="Black"></GradientStop>
<GradientStop Offset=" 1" Color="White"></GradientStop>
</LinearGradientBrush>
</Line.Stroke>
</Line>
<Path Width="160" Height="160" Fill="White" >
<Path.Data>
<GeometryGroup>
<EllipseGeometry RadiusX="80" RadiusY="80" Center="80,80" ></EllipseGeometry>
<EllipseGeometry RadiusX="1" RadiusY="1" Center="80,80" >
</EllipseGeometry>
</GeometryGroup>
</Path.Data>
</Path>
<Path Name="myPath" Width="160" Height="160">
<Path.Fill>
<VisualBrush Viewbox="0,0,30,30" ViewboxUnits="Absolute" ViewportUnits="RelativeToBoundingBox" Viewport="0,0,1,1"></VisualBrush>
</Path.Fill>
<Path.Data>
<GeometryGroup>
<EllipseGeometry RadiusX="80" RadiusY="80" Center="80,80" ></EllipseGeometry>
<EllipseGeometry RadiusX="1" RadiusY="1" Center="80,80" >
</EllipseGeometry>
</GeometryGroup>
</Path.Data>
</Path>
<Ellipse Width="160" Height="160" StrokeThickness="5">
<Ellipse.Stroke>
<LinearGradientBrush StartPoint="1,1" EndPoint="0,0">
<GradientStop Offset="0" Color="Black"></GradientStop>
<GradientStop Offset="1" Color="White"></GradientStop>
</LinearGradientBrush>
</Ellipse.Stroke>
</Ellipse>
<Ellipse Width="160" Height="160" StrokeThickness="5">
<Ellipse.Stroke>
<LinearGradientBrush StartPoint="1,1" EndPoint="0,0">
<GradientStop Offset="1" Color="Black"></GradientStop>
<GradientStop Offset="0" Color="White"></GradientStop>
</LinearGradientBrush>
</Ellipse.Stroke>
</Ellipse>
</Canvas>
<Button Canvas.Left="348" Canvas.Top="182" Height="23" Name="button1" Width="75">Button</Button>
</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.Shapes;
namespace byWpfTest
{
/// <summary>
/// Window5.xaml 的交互逻辑
/// </summary>
public partial class Window5 : Window
{
public Window5()
{
InitializeComponent();
VisualBrush vb = (VisualBrush)myPath.Fill;
vb.Visual = showGrid;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
}
private void Grid_PreviewMouseMove(object sender, MouseEventArgs e)
{
VisualBrush vb = (VisualBrush)myPath.Fill;
Point pimy = e.MouseDevice.GetPosition(showGrid);
Rect rc = vb.Viewbox;
rc.X = pimy.X - rc.Width / 2;
rc.Y = pimy.Y - rc.Height / 2;
vb.Viewbox = rc;
Thickness tc = new Thickness(pimy.X - myPath.Width / 2, pimy.Y - myPath.Height / 2, pimy.X + myPath.Width / 2 ,pimy.Y+ myPath.Height / 2);
canvas.Margin = tc;
//Canvas.SetLeft(canvas, pimy.X - myPath.Width / 2);
//Canvas.SetTop(canvas, pimy.Y - myPath.Height / 2);
}
}
}
后台代码
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window5" Height="757" Width="709" Loaded="Window_Loaded">
<!--最外区域快-->
<Grid PreviewMouseMove="Grid_PreviewMouseMove">
<!--显示区域-->
<Grid Name="showGrid">
<Grid.RowDefinitions>
<RowDefinition Height="100*" />
<RowDefinition Height="98*" />
<RowDefinition Height="521*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="56*" />
<ColumnDefinition Width="272*" />
<ColumnDefinition Width="228*" />
<ColumnDefinition Width="131*" />
</Grid.ColumnDefinitions>
<Button Height="23" Margin="14,0,3,4" Name="butto3" VerticalAlignment="Bottom" Grid.Column="1">Button</Button>
<Label Margin="14,39,88,33" Name="label1" Grid.Column="1">Label</Label>
<Label Margin="122,26,43,46" Name="lblText" Grid.Column="1">Labefdsfdsfsdfdsfdsfdsl</Label>
</Grid>
<!--放大镜-->
<Grid Name="myGrid" >
<Canvas Name="canvas" VerticalAlignment="Top" HorizontalAlignment="Left">
<Line StrokeThickness="30" X1="140" X2="270" Y1="135" Y2="260" >
<Line.Stroke>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Offset=" 0" Color="Black"></GradientStop>
<GradientStop Offset=" 1" Color="White"></GradientStop>
</LinearGradientBrush>
</Line.Stroke>
</Line>
<Path Width="160" Height="160" Fill="White" >
<Path.Data>
<GeometryGroup>
<EllipseGeometry RadiusX="80" RadiusY="80" Center="80,80" ></EllipseGeometry>
<EllipseGeometry RadiusX="1" RadiusY="1" Center="80,80" >
</EllipseGeometry>
</GeometryGroup>
</Path.Data>
</Path>
<Path Name="myPath" Width="160" Height="160">
<Path.Fill>
<VisualBrush Viewbox="0,0,30,30" ViewboxUnits="Absolute" ViewportUnits="RelativeToBoundingBox" Viewport="0,0,1,1"></VisualBrush>
</Path.Fill>
<Path.Data>
<GeometryGroup>
<EllipseGeometry RadiusX="80" RadiusY="80" Center="80,80" ></EllipseGeometry>
<EllipseGeometry RadiusX="1" RadiusY="1" Center="80,80" >
</EllipseGeometry>
</GeometryGroup>
</Path.Data>
</Path>
<Ellipse Width="160" Height="160" StrokeThickness="5">
<Ellipse.Stroke>
<LinearGradientBrush StartPoint="1,1" EndPoint="0,0">
<GradientStop Offset="0" Color="Black"></GradientStop>
<GradientStop Offset="1" Color="White"></GradientStop>
</LinearGradientBrush>
</Ellipse.Stroke>
</Ellipse>
<Ellipse Width="160" Height="160" StrokeThickness="5">
<Ellipse.Stroke>
<LinearGradientBrush StartPoint="1,1" EndPoint="0,0">
<GradientStop Offset="1" Color="Black"></GradientStop>
<GradientStop Offset="0" Color="White"></GradientStop>
</LinearGradientBrush>
</Ellipse.Stroke>
</Ellipse>
</Canvas>
<Button Canvas.Left="348" Canvas.Top="182" Height="23" Name="button1" Width="75">Button</Button>
</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.Shapes;
namespace byWpfTest
{
/// <summary>
/// Window5.xaml 的交互逻辑
/// </summary>
public partial class Window5 : Window
{
public Window5()
{
InitializeComponent();
VisualBrush vb = (VisualBrush)myPath.Fill;
vb.Visual = showGrid;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
}
private void Grid_PreviewMouseMove(object sender, MouseEventArgs e)
{
VisualBrush vb = (VisualBrush)myPath.Fill;
Point pimy = e.MouseDevice.GetPosition(showGrid);
Rect rc = vb.Viewbox;
rc.X = pimy.X - rc.Width / 2;
rc.Y = pimy.Y - rc.Height / 2;
vb.Viewbox = rc;
Thickness tc = new Thickness(pimy.X - myPath.Width / 2, pimy.Y - myPath.Height / 2, pimy.X + myPath.Width / 2 ,pimy.Y+ myPath.Height / 2);
canvas.Margin = tc;
//Canvas.SetLeft(canvas, pimy.X - myPath.Width / 2);
//Canvas.SetTop(canvas, pimy.Y - myPath.Height / 2);
}
}
}
后台代码
相关文章推荐
- WPF控件内容自动缩放及放大镜
- WPF示例-4-动态制作放大镜
- WPF中利用RadialGradient模拟放大镜效果
- WPF 放大镜
- wpf放大镜
- WPF-动态制作放大镜
- WPF之VistualBrush应用(制作放大镜)
- WPF 放大镜(Magnifying Glass)
- WPF设置VistualBrush的Visual属性制作图片放大镜效果
- WPF放大镜程序-VisualBrush的使用
- WPF放大镜程序-VisualBrush的使用
- 错误代码2104:无法下载Silverlight应用程序。请查看Web服务器设置(支持WPF和Clickonce应用程序的相应设置)
- win8开发wpf程序遇到的无语问题
- WPF新手之如何将数据绑定到TreeView
- 2000条你应知的WPF小姿势 基础篇<28-33 WPF启动故事>
- centering-text-on-a-wpf-shape
- WPF(.net4.0)嵌入windows Media Player 运行出错
- WPF调用Win32程序的方法
- WPf学习------XAML 概述 (WPF)
- WPF基础之路由事件