最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

silverlight實現(xiàn)圖片局部放大效果的方法

 更新時間:2017年03月10日 11:01:50   作者:菩提樹下的楊過  
這篇文章主要介紹了silverlight實現(xiàn)圖片局部放大效果的方法,結(jié)合實例形式分析了silverlight針對圖片屬性的相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了silverlight實現(xiàn)圖片局部放大效果的方法。分享給大家供大家參考,具體如下:

很多購物平臺中(比如京東購物),瀏覽產(chǎn)品詳情時都有這種效果,前幾天看到有朋友問SL能不能實現(xiàn),當(dāng)然可以

界面:

1.左側(cè)小圖片(用一個矩形Fill一張圖片即可)
2.左側(cè)半透明矩形
3.右側(cè)大圖片(用一個Canvas設(shè)置Clip裁剪可視區(qū)域作為蒙板,圖片放置在Canvas中即可)

原理:

獲取左側(cè)半透明矩形的相對位置,然后動態(tài)調(diào)整右側(cè)大圖的Canvas.Left與Canvas.Top

需要知道以下技術(shù)點:

1.Clip的應(yīng)用
2.如何拖動對象
3.拖動時的邊界檢測
4.動態(tài)調(diào)整對象的Canvas.Left與Canvas.Top屬性

尺寸要點:

1.右側(cè)大圖可視區(qū)域與左側(cè)半透明矩形的“長寬比例”應(yīng)該相同
2.“圖片原始尺寸長度比” 應(yīng)該 “與左側(cè)小圖片長度比”相同
3.圖片原始大小/左側(cè)小圖大小 = 右側(cè)可視區(qū)域大小/半透明矩形大小

關(guān)鍵代碼:

using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace PartMagnifier
{
  public partial class MainPage : UserControl
  {
    bool trackingMouseMove = false;
    Point mousePosition;
    public MainPage()
    {
      // 為初始化變量所必需
      InitializeComponent();
    }
    private void LayoutRoot_Loaded(object sender, System.Windows.RoutedEventArgs e)
    {
      Adjust();
    }
    private void Rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
      FrameworkElement element = sender as FrameworkElement;
      mousePosition = e.GetPosition(element);
      trackingMouseMove = true;
      if (null != element)
      {
        element.CaptureMouse();
        element.Cursor = Cursors.Hand;
      }
      Adjust();
      Debug();
      sb.Begin();//標題動畫,可去掉
    }
    private void Rectangle_MouseMove(object sender, MouseEventArgs e)
    {
      FrameworkElement element = sender as FrameworkElement;
      if (trackingMouseMove)
      {
        double deltaV = e.GetPosition(element).Y - mousePosition.Y;
        double deltaH = e.GetPosition(element).X - mousePosition.X;
        double newTop = deltaV + (double)element.GetValue(Canvas.TopProperty);
        double newLeft = deltaH + (double)element.GetValue(Canvas.LeftProperty);
        if (newLeft <= 10)
        {
          newLeft = 10;
        }
        if (newLeft >= 130)
        {
          newLeft = 130;
        }
        if (newTop <= 10) { newTop = 10; }
        if (newTop >= 85) { newTop = 85; }
        element.SetValue(Canvas.TopProperty, newTop);
        element.SetValue(Canvas.LeftProperty, newLeft);
        mousePosition = e.GetPosition(element);
        Adjust();
        if (mousePosition.X <= 0 || mousePosition.Y <= 0) { return; }
        Debug();
      }
    }
    private void Rectangle_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
      FrameworkElement element = sender as FrameworkElement;
      trackingMouseMove = false;
      element.ReleaseMouseCapture();
      mousePosition.X = mousePosition.Y = 0;
      element.Cursor = null;
    }
    /// <summary>
    /// 調(diào)試信息
    /// </summary>
    void Debug()
    {
      txtResult.Text = "鼠標相對坐標:" + mousePosition.ToString() + "\n小框left:" + rect.GetValue(Canvas.LeftProperty) + ",小框top:" + rect.GetValue(Canvas.TopProperty) + "\n大圖left:" + ((double)img.GetValue(Canvas.LeftProperty)).ToString("F0") + ",大圖right:" + ((double)img.GetValue(Canvas.TopProperty)).ToString("F0");
    }
    /// <summary>
    /// 調(diào)整右側(cè)大圖的位置
    /// </summary>
    void Adjust()
    {
      double n = cBig.Width / rect.Width;
      double left = (double)rect.GetValue(Canvas.LeftProperty) - 10;
      double top = (double)rect.GetValue(Canvas.TopProperty) - 10;
      double newLeft = -left * n;
      double newTop = -top * n;
      img.SetValue(Canvas.LeftProperty, newLeft);
      img.SetValue(Canvas.TopProperty, newTop);
    }
  }
}

更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《C#圖片操作技巧匯總》、《C#常見控件用法教程》、《WinForm控件用法總結(jié)》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#面向?qū)ο蟪绦蛟O(shè)計入門教程》及《C#程序設(shè)計之線程使用技巧總結(jié)

希望本文所述對大家C#程序設(shè)計有所幫助。

相關(guān)文章

  • c#判斷正確的ip地址格式示例

    c#判斷正確的ip地址格式示例

    這篇文章主要介紹了c#判斷正確的ip地址格式示例,需要的朋友可以參考下
    2014-02-02
  • C#使用NPOI設(shè)置Excel下拉選項

    C#使用NPOI設(shè)置Excel下拉選項

    這篇文章主要為大家詳細介紹了C#使用NPOI設(shè)置Excel下拉選項,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#實現(xiàn)將像素轉(zhuǎn)換為頁面單位的方法

    C#實現(xiàn)將像素轉(zhuǎn)換為頁面單位的方法

    這篇文章主要介紹了C#實現(xiàn)將像素轉(zhuǎn)換為頁面單位的方法,涉及C#像素轉(zhuǎn)換在圖形繪制中的技巧,需要的朋友可以參考下
    2015-06-06
  • C#讀取本地網(wǎng)絡(luò)配置信息全攻略分享

    C#讀取本地網(wǎng)絡(luò)配置信息全攻略分享

    在當(dāng)今數(shù)字化時代,網(wǎng)絡(luò)已深度融入我們生活與工作的方方面面,對于軟件開發(fā)而言,掌握本地計算機的網(wǎng)絡(luò)配置信息顯得尤為關(guān)鍵,而在 C# 編程的世界里,我們又該如何巧妙地讀取這些至關(guān)重要的本地網(wǎng)絡(luò)配置信息呢?接下來,就讓我們一同踏上探索之旅
    2025-01-01
  • c# Base64編碼和圖片的互相轉(zhuǎn)換代碼

    c# Base64編碼和圖片的互相轉(zhuǎn)換代碼

    Base64編碼在Web方面有很多應(yīng)用,譬如在URL、電子郵件方面。網(wǎng)上有很多相關(guān)的資源用于提供Base64編碼和其他編碼的轉(zhuǎn)換,.Net Framework也提供了現(xiàn)成的功能類(System.Convert)用于將二進制數(shù)據(jù)轉(zhuǎn)換為Base64字符串
    2014-08-08
  • C#實現(xiàn)圖片上傳與瀏覽切換的方法

    C#實現(xiàn)圖片上傳與瀏覽切換的方法

    這篇文章主要介紹了C#實現(xiàn)圖片上傳與瀏覽切換的方法,是很有實用價值的一個應(yīng)用技巧,需要的朋友可以參考下
    2014-08-08
  • c# 可疑文件掃描代碼(找到木馬)(簡)

    c# 可疑文件掃描代碼(找到木馬)(簡)

    c# 可疑文件掃描代碼(找到木馬),需要的朋友可以參考下。
    2010-05-05
  • C#使用channel實現(xiàn)Plc異步任務(wù)之間的通信

    C#使用channel實現(xiàn)Plc異步任務(wù)之間的通信

    在C#的并發(fā)編程中,Channel是一種非常強大的數(shù)據(jù)結(jié)構(gòu),用于在生產(chǎn)者和消費者之間進行通信,本文將給大家介紹C#使用channel實現(xiàn)Plc異步任務(wù)之間的通信,文中有相關(guān)的代碼示例供大家參考,感興趣的朋友跟著小編一起來看看吧
    2024-05-05
  • C# string轉(zhuǎn)換為幾種不同編碼的Byte[]的問題解讀

    C# string轉(zhuǎn)換為幾種不同編碼的Byte[]的問題解讀

    這篇文章主要介紹了C# string轉(zhuǎn)換為幾種不同編碼的Byte[]的問題解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • C#為配置文件加密的實現(xiàn)方法

    C#為配置文件加密的實現(xiàn)方法

    這篇文章主要介紹了C#為配置文件加密的實現(xiàn)方法,可實現(xiàn)對配置文件中的敏感信息進行加密,非常具有實用價值,需要的朋友可以參考下
    2014-10-10

最新評論

钟祥市| 卓资县| 南开区| 云和县| 米泉市| 梁河县| 桐柏县| 杨浦区| 新龙县| 黔西县| 甘南县| 库尔勒市| 安西县| 卢氏县| 卫辉市| 通道| 红原县| 清苑县| 涟水县| 阳江市| 旬邑县| 印江| 广河县| 庆安县| 普格县| 汉阴县| 吴堡县| 龙江县| 平罗县| 金川县| 康保县| 蓝山县| 岳阳市| 江西省| 西丰县| 突泉县| 中方县| 玉门市| 额尔古纳市| 南溪县| 汾西县|