static public ImageBrush GetImageBrush(UIElement element)
        {
            // 컨트롤을 이미지 브러쉬로 만들어서 Adorner에 채움.
            double left = Canvas.GetLeft(element);
            double top = Canvas.GetTop(element);
            var innerBitmap = new RenderTargetBitmap(
                (int)left + (int)element.RenderSize.Width,
                (int)top + (int)element.RenderSize.Height,
                96d,
                96d,
                PixelFormats.Pbgra32);
            innerBitmap.Render(element);
            var brush = new ImageBrush(innerBitmap)
                            {
                                ViewboxUnits = BrushMappingMode.Absolute,
                                Viewbox =
                                    new Rect(left, top,
                                        element.RenderSize.Width,
                                        element.RenderSize.Height)
                            };


            return brush;
        }

2009.04.01 조금 더 유연하게 수정했음.

   11 static public ImageBrush GetImageBrush(UIElement element, double cutTop, double cutBottom, double cutLeft, double cutRight)

   12 {  

   13     double left = Canvas.GetLeft(element);

   14     double top = Canvas.GetTop(element);

   15     var innerBitmap = new RenderTargetBitmap(

   16         (int)(left + element.RenderSize.Width),

   17         (int)(top + element.RenderSize.Height),

   18         96d,

   19         96d,

   20         PixelFormats.Pbgra32);

   21     innerBitmap.Render(element);

   22     var brush = new ImageBrush(innerBitmap)

   23                     {

   24                         ViewboxUnits = BrushMappingMode.Absolute,

   25                         Viewbox =

   26                             new Rect(left + cutLeft, top + cutTop,

   27                                 element.RenderSize.Width  - cutLeft - cutRight,

   28                                 element.RenderSize.Height - cutTop - cutBottom)

   29                     };

   30 

   31 

   32     return brush;

   33 }

   34 

   35 static public ImageBrush GetImageBrush(UIElement element)

   36 {

   37     return GetImageBrush(element, 0.0, 0.0, 0.0, 0.0);

   38 }

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/03/25 09:54 2009/03/25 09:54
Posted by 나는산.

Leave your greetings here.

  1. Comment RSS : http://lovehana.com/rss/comment/568
  2. 이동인 2009/03/31 05:19  Modify/Delete  Reply  Address

    엘리먼트를 드래그 하는 시점에 UI 코드 용으로 사용하면 좋을 듯 합니다.
    좋은 거 보고 갑니다.

[로그인][오픈아이디란?]