zoukankan      html  css  js  c++  java
  • Silverlight裁剪元素图片

    WriteableBitmap可以对元素产生贴图,而这个元素并不需要被实际添加到呈现元素中。Canvas的特点是在给定的宽度、高度显示元素,如果元素超出给定的viewport就不可见。对于一个元素来说裁剪左上部分的图片可以通过Canvas的SetLeft和SetTop函数或者对元素进行移动的变换(TranslateTransform)。而右下角的部分可以通过显示设置Canvas的宽度、高度来定义。比如你可以编写这么一个扩展函数来将元素裁剪到一个Canvas:

     1 /// <summary>
     2 /// 剪辑为画布
     3 /// </summary>
     4 /// <param name=”element”>元素</param>
     5 /// <param name=”rect”>矩形</param>
     6 /// <returns>画布</returns>
     7 public static Canvas CropeedToCanvas(this FrameworkElement element, Rect rect)
     8 {
     9   // 平移变换
    10   TranslateTransform transform = new TranslateTransform();
    11 
    12   transform.X = -rect.X;
    13   transform.Y = -rect.Y;
    14 
    15   Image image = new Image();
    16 
    17   image.Stretch = Stretch.None;
    18   image.RenderTransform = transform;
    19   image.Source = new WriteableBitmap(element, null);
    20 
    21   Canvas canvas = new Canvas();
    22 
    23   canvas.Width = rect.Width;
    24   canvas.Height = rect.Height;
    25 
    26   canvas.Children.Add(image);
    27 
    28   return canvas;
    29 }

    虽然Canvas内部只有一个元素,不要使用容纳单个元素的ContentControl来实现这个效果。比如Border,因为Border在指定Child的时候不会立刻计算出本身的ActualWidth和ActualHeight,而Canvas在调用Children属性的Add函数后,它的ActualWidth和ActualHeight会被重新计算。

  • 相关阅读:
    Linux mysql 联表查询
    Linux firewalld使用教程+rhce课程实验
    Linux 常用端口
    Linux redhat 7 进入单用户模式
    Linux 子网掩码计算, 二进制十进制互相转换
    Linux 网络配置文件解析
    P1678 烦恼的高考志愿(二分)
    P1563 玩具谜题(简单模拟)
    P1553 数字反转(升级版)(模拟)
    P2690 接苹果 (DP)
  • 原文地址:https://www.cnblogs.com/junchu25/p/2633465.html
Copyright © 2011-2022 走看看