0

ユニバーサル アプリ (Windows Phone) に次のコードがあります。

      void colourPicker_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
    {
        PicturePicker picturePicker = sender as PicturePicker;

        GeneralTransform transform = picturePicker.TransformToVisual(ImageHolder);
        Point controlPosition = transform.TransformPoint(new Point(0, 0));

        int pointX = (int)controlPosition.X;
        int pointY = (int)controlPosition.Y;

        Color c = writeableBmp.GetPixel(pointX, pointY);

        //  WriteableBitmap newWB = writeableBmp.Crop(pointX - 21, pointY - 21, 42, 42);
        //  picturePicker.SetImageBrush(newWB);


        SolidColorBrush brush = new SolidColorBrush(c);
        picturePicker.SetColor(brush);


        Canvas.SetLeft(picturePicker, Canvas.GetLeft(picturePicker) + e.Delta.Translation.X);
        Canvas.SetTop(picturePicker, Canvas.GetTop(picturePicker) + e.Delta.Translation.Y);
    }

私は画像を持っており、その上に UserControl (非常に単純な XAML) があり、ユーザーはドラッグして必要な色を見つけることができます。ManipulationDelta ではドラッグのみがうまく機能しますが、ManipulationDelta イベントがトリガーされるたびに GetPixel() を実行しようとすると、変換が非常に遅くなります。色の設定 (picturePicker.SetColor) をコメントアウトしてもまだ遅いので問題ありません。

非常に奇妙で、非常によく似たコードが、Silverlight のこのアプリの古いバージョン (同じ電話) でスムーズに動作しました。

これを改善する方法について何か考えはありますか?

4

0 に答える 0