예제 #1
0
        private void RunBackgroundAddIn()
        {
            // Do the work.
            var changedPixels = _addin.ProcessImageBytes(_originalPixels);

            // Update the UI on the UI thread.
            Dispatcher.BeginInvoke(DispatcherPriority.Normal,
                                   (ThreadStart) delegate
            {
                var newSource = BitmapSource.Create(
                    _originalSource.PixelWidth,
                    _originalSource.PixelHeight,
                    _originalSource.DpiX,
                    _originalSource.DpiY,
                    _originalSource.Format,
                    _originalSource.Palette,
                    changedPixels,
                    _stride);

                ImageToProcess.Source         = newSource;
                AddInProcessProgressBar.Value = 0;

                // Release the add-in (it's a member variable now,
                // so this step is explicit).
                _addin = null;
            }
                                   );
        }
예제 #2
0
        private void OnProcessImage(object sender, RoutedEventArgs e)
        {
            var token = (AddInToken)AddInListBox.SelectedItem;

            _addIn = token.Activate <ImageProcessorHostView>(AddInSecurityLevel.Host);
            var streamResourceInfo = Application.GetResourceStream(new Uri("Forest.jpg", UriKind.RelativeOrAbsolute));

            if (streamResourceInfo != null)
            {
                var imageStream = streamResourceInfo.Stream;
                AddInBorder.Child = _addIn.GetVisual(imageStream);
            }
        }
예제 #3
0
        private void OnProcessImage(object sender, RoutedEventArgs e)
        {
            // Get the byte array ready.
            _originalSource = (BitmapSource)ImageToProcess.Source;
            _stride         = _originalSource.PixelWidth * _originalSource.Format.BitsPerPixel / 8;
            _stride         = _stride + _stride % 4 * 4;
            _originalPixels = new byte[_stride * _originalSource.PixelHeight * _originalSource.Format.BitsPerPixel / 8];
            _originalSource.CopyPixels(_originalPixels, _stride, 0);

            // Start the add-in.
            var token = (AddInToken)AddInListBox.SelectedItem;

            _addin = token.Activate <ImageProcessorHostView>(AddInSecurityLevel.Internet);
            _addin.Initialize(_automationHost);

            // Launch the image processing work on a separate thread.
            var thread = new Thread(RunBackgroundAddIn);

            thread.Start();
        }