Imaging Library for Silverlight
手順 3:コードの追加

この手順のコードは、デフォルトの画像を読み込み、ユーザーがその画像をトリミングできるようにします。次の手順に従います。

  1. MainPage.xaml.cs ファイルを開き、次の using(Visual Basic の場合は Imports)文を追加します。
    C#
    コードのコピー
    using C1.Silverlight;
    using C1.Silverlight.Imaging;
    using System.IO;
    
  2. デフォルトの画像を読み込み、トリミングを定義するために、次のコードを追加します。
    C#
    コードのコピー
    public partial class MainPage : UserControl
    {
        C1Bitmap bitmap = new C1Bitmap();
        Rect selection;
        public MainPage()
        {
            InitializeComponent();
            LoadDefaultImage();
            image.Source = bitmap.ImageSource;
            var mouseHelper = new C1MouseHelper(imageGrid);
            mouseHelper.MouseDragStart += OnDrag;
            mouseHelper.MouseDragMove += OnDrag;
        }
        void OnDrag(object sender, MouseDragEventArgs e)
        {
            var transform = Application.Current.RootVisual.TransformToVisual(image);
            var start = transform.Transform(e.StartPosition);
            var end = transform.Transform(e.CurrentPosition);
            start.X = Math.Min(Math.Max(start.X, 0), bitmap.Width);
            end.X = Math.Min(Math.Max(end.X, 0), bitmap.Width);
            start.Y = Math.Min(Math.Max(start.Y, 0), bitmap.Height);
            end.Y = Math.Min(Math.Max(end.Y, 0), bitmap.Height);
            selection = new Rect(new Point(
                Math.Round(Math.Min(start.X, end.X)),
                Math.Round(Math.Min(start.Y, end.Y))),
                new Size(Math.Round(Math.Abs(start.X - end.X)), Math.Round(Math.Abs(start.Y - end.Y))));
            UpdateMask();
        }
        void UpdateMask()
        {
            topMask.Height = selection.Top;
            bottomMask.Height = bitmap.Height - selection.Bottom;
            leftMask.Width = selection.Left;
            rightMask.Width = bitmap.Width - selection.Right;
        }
        void LoadDefaultImage()
        {
            LoadImageStream(Application.GetResourceStream(new Uri("/SilverlightApplication1;component/Lenna.jpg", UriKind.Relative)).Stream);
        }
       void LoadImageStream(Stream stream)
        {
            bitmap.SetStream(stream);
            imageGrid.Width = bitmap.Width;
            imageGrid.Height = bitmap.Height;
            selection = new Rect(0, 0, bitmap.Width, bitmap.Height);
            UpdateMask();
        }
    }
    

次の手順では、このアプリケーションを実行します。

 

 


Copyright c GrapeCity inc. All rights reserved.