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会被重新计算。

  • 相关阅读:
    搜索--P1605 迷宫
    搜索--P1219 N皇后
    复制百度文库的技巧
    P1036 选数(DFS)
    P1217 [USACO1.5]回文质数 Prime Palindromes
    mysql常用指令
    code blocks 安装与实践
    C++ string 是否以‘’结尾 讨论
    ELK(1) ELK的安装及使用收集日志
    windows下nginx的安装及使用
  • 原文地址:https://www.cnblogs.com/junchu25/p/2633465.html
Copyright © 2011-2022 走看看