Imaging for UWP
手順3:画像のトリミングに使用するコードの追加
Imaging for UWP > Bitmap for UWP > クイックスタート > 手順3:画像のトリミングに使用するコードの追加

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

  1. MainPage.xaml.cs ファイルを開き、次の using(Visual Basic の場合は Imports)文を追加します。

    C# コードの書き方

    C#
    コードのコピー
    using C1.Xaml;
    using C1.Xaml.Imaging;
    using System.IO;
  2. デフォルトの画像を読み込み、トリミングを定義するために、次のコードを追加します。

    C# コードの書き方

    C#
    コードのコピー
    public partial class MainPage : UserControl
    {

    C1Bitmap bitmap = new C1Bitmap();
    Rect selection;


    public MainPage()
    {
    InitializeComponent();
    LoadDefaultImage();
    image.Source = bitmap.ImageSource;

    var mouseHelper = new C1DragHelper(imageGrid);
    mouseHelper.DragStarted += OnDragStarted;
    mouseHelper.DragDelta += OnDragDelta;
    }

    void OnDragDelta(object sender, C1DragDeltaEventArgs e)
    {
    var transform = Window.Current.Content.TransformToVisual(image);
    var start = transform.TransformPoint(_startPosition);
    var end = transform.TransformPoint(e.GetPosition(null));
    start.X = Math.Min((double)Math.Max(start.X, 0), bitmap.Width);
    end.X = Math.Min((double)Math.Max(end.X, 0), bitmap.Width);
    start.Y = Math.Min((double)Math.Max(start.Y, 0), bitmap.Height);
    end.Y = Math.Min((double)Math.Max(end.Y, 0), bitmap.Height);

    selection = new Rect(new Point(
    Math.Round(Convert.ToDouble(Math.Min(start.X, end.X))),
    Math.Round(Convert.ToDouble(Math.Min(start.Y, end.Y)))),
    new Size(Convert.ToDouble(Math.Round(Math.Abs(start.X - end.X))),
    Convert.ToDouble(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()
    {
    Assembly asm = typeof(Crop).GetTypeInfo().Assembly;
    Stream stream = asm.GetManifestResourceStream("ImageSamplesLib2012.Resources.Lenna.jpg");
    LoadImageStream(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();
    }
    }

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

関連トピック