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); }
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); }
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; }
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(); }
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; } ); }