예제 #1
0
        private void cmdProcessImage_Click(object sender, RoutedEventArgs e)
        {
            AddInToken token = (AddInToken)lstAddIns.SelectedItem;

            addin = token.Activate <HostView.ImageProcessorHostView>(AddInSecurityLevel.Host);

            Stream imageStream = Application.GetResourceStream(new Uri("Forest.jpg", UriKind.RelativeOrAbsolute)).Stream;

            pnlAddIn.Child = addin.GetVisual(imageStream);
        }
예제 #2
0
        private void cmdProcessImage_Click(object sender, RoutedEventArgs e)
        {                   
            
            AddInToken token = (AddInToken)lstAddIns.SelectedItem;
            addin = token.Activate<HostView.ImageProcessorHostView>(AddInSecurityLevel.Host);
            
            Stream imageStream = Application.GetResourceStream(new Uri("Forest.jpg", UriKind.RelativeOrAbsolute)).Stream;

            pnlAddIn.Child = addin.GetVisual(imageStream);
            
        }
예제 #3
0
        private void cmdProcessImage_Click(object sender, RoutedEventArgs e)
        {
            BitmapSource originalSource = (BitmapSource)img.Source;
            int          stride         = originalSource.PixelWidth * originalSource.Format.BitsPerPixel / 8;

            stride = stride + (stride % 4) * 4;
            byte[] originalPixels = new byte[stride * originalSource.PixelHeight * originalSource.Format.BitsPerPixel / 8];

            originalSource.CopyPixels(originalPixels, stride, 0);

            AddInToken token = (AddInToken)lstAddIns.SelectedItem;

            HostView.ImageProcessorHostView addin = token.Activate <HostView.ImageProcessorHostView>(AddInSecurityLevel.Internet);
            byte[] changedPixels = addin.ProcessImageBytes(originalPixels);

            BitmapSource newSource = BitmapSource.Create(originalSource.PixelWidth, originalSource.PixelHeight, originalSource.DpiX, originalSource.DpiY, originalSource.Format, originalSource.Palette, changedPixels, stride);

            img.Source = newSource;
        }
예제 #4
0
        private void cmdProcessImage_Click(object sender, RoutedEventArgs e)
        {
            // Get the byte array ready.
            originalSource = (BitmapSource)img.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.
            AddInToken token = (AddInToken)lstAddIns.SelectedItem;

            addin = token.Activate <HostView.ImageProcessorHostView>(AddInSecurityLevel.Internet);
            addin.Initialize(automationHost);

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

            thread.Start();
        }
예제 #5
0
        private void RunBackgroundAddIn()
        {
            // Do the work.
            byte[] changedPixels = addin.ProcessImageBytes(originalPixels);

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

                img.Source        = newSource;
                progressBar.Value = 0;

                // Release the add-in (it's a member variable now,
                // so this step is explicit).
                addin = null;
            }
                                        );
        }