本文整理汇总了C#中System.Windows.Media.Imaging.WriteableBitmap.AsBitmap方法的典型用法代码示例。如果您正苦于以下问题:C# WriteableBitmap.AsBitmap方法的具体用法?C# WriteableBitmap.AsBitmap怎么用?C# WriteableBitmap.AsBitmap使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Windows.Media.Imaging.WriteableBitmap
的用法示例。
在下文中一共展示了WriteableBitmap.AsBitmap方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: OnNavigatedTo
protected override async void OnNavigatedTo(NavigationEventArgs e) {
StreamResourceInfo sri = Application.GetResourceStream(new Uri("DemoImage.jpg", UriKind.Relative));
var myBitmap = new WriteableBitmap(800, 480);
img.ImageSource = myBitmap;
using (var editsession = await EditingSessionFactory.CreateEditingSessionAsync(sri.Stream)) {
// First add an antique effect
editsession.AddFilter(FilterFactory.CreateCartoonFilter(true));
editsession.AddFilter(FilterFactory.CreateAntiqueFilter());
// Then rotate the image
editsession.AddFilter(FilterFactory.CreateFreeRotationFilter(35.0f, RotationResizeMode.FitInside));
await editsession.RenderToBitmapAsync(myBitmap.AsBitmap());
}
myBitmap.Invalidate();
base.OnNavigatedTo(e);
}
示例2: Render
public async static Task<WriteableBitmap> Render(WriteableBitmap actualImage, List<IFilter> filters)
{
var bitmap = actualImage.AsBitmap();
BitmapImageSource bitmapSource = new BitmapImageSource(bitmap);
FilterEffect effects = new FilterEffect(bitmapSource);
effects.Filters = filters;
WriteableBitmapRenderer renderer = new WriteableBitmapRenderer(effects, actualImage);
return await renderer.RenderAsync();
}
示例3: CreateFramedAnimation
private static IReadOnlyList<IImageProvider> CreateFramedAnimation(IReadOnlyList<IImageProvider> images, Rect animationBounds, int w, int h)
{
List<IImageProvider> framedAnimation = new List<IImageProvider>();
WriteableBitmap maskBitmap = new WriteableBitmap(w, h);
var backgroundRectangle = new Rectangle
{
Fill = new SolidColorBrush(Colors.Black),
Width = w,
Height = h,
};
maskBitmap.Render(backgroundRectangle, new TranslateTransform());
var foregroundRectangle = new Rectangle
{
Fill = new SolidColorBrush(Colors.White),
Width = animationBounds.Width,
Height = animationBounds.Height,
};
TranslateTransform foregroundTranslate = new TranslateTransform
{
X = animationBounds.X,
Y = animationBounds.Y
};
maskBitmap.Render(foregroundRectangle, foregroundTranslate);
maskBitmap.Invalidate();
foreach (IImageProvider frame in images)
{
FilterEffect filterEffect = new FilterEffect(images[0]);
BlendFilter blendFilter = new BlendFilter(frame, BlendFunction.Normal, 1.0)
{
MaskSource = new BitmapImageSource(maskBitmap.AsBitmap())
};
filterEffect.Filters = new List<IFilter>() { blendFilter };
framedAnimation.Add(filterEffect);
}
return framedAnimation;
}
示例4: ApplyFilterToBackgroundImageAsync
private async void ApplyFilterToBackgroundImageAsync()
{
MemoryStream bitmapStream = new MemoryStream();
Source.SaveJpeg(bitmapStream, Source.PixelWidth, Source.PixelHeight, 0, 50);
IBuffer bmpBuffer = bitmapStream.GetWindowsRuntimeBuffer();
// Output buffer
WriteableBitmap outputImage = new WriteableBitmap(Source.PixelWidth, Source.PixelHeight);
using (EditingSession editsession = new EditingSession(bmpBuffer))
{
// First add an antique effect
editsession.AddFilter(FilterFactory.CreateBlurFilter(BlurLevel.Blur6));
// Finally, execute the filtering and render to a bitmap
await editsession.RenderToBitmapAsync(outputImage.AsBitmap());
outputImage.Invalidate();
FadeInNewImage(outputImage);
}
}
示例5: SplitImageFromBitmap
private async void SplitImageFromBitmap(WriteableBitmap bmp)
{
_session = new EditingSession(bmp.AsBitmap());
if (playMode == PlayMode.CameraVideo) _session.AddFilter(FilterFactory.CreateStepRotationFilter(Rotation.Rotate90));
if (playMode == PlayMode.CameraVideo) _session.AddFilter(FilterFactory.CreateCropFilter(new Windows.Foundation.Rect(15, 20, 450, 600)));
IFilter selectedFilter = GetFilter();
try
{
if (Utils.IsChallengeMode())
{
foreach (Image img in images)
{
_session.AddFilter(FilterFactory.CreateCropFilter(new Windows.Foundation.Rect(images.IndexOf(img) % 3 * 150, images.IndexOf(img) / 3 * 150, 150, 150)));
if (selectedFilter != null ) _session.AddFilter(selectedFilter);
await _session.RenderToImageAsync(img, OutputOption.PreserveAspectRatio);
if (selectedFilter != null && _session.CanUndo()) _session.Undo();
if (_session.CanUndo()) _session.Undo();
}
}
else
{
foreach (Image img in images)
{
_session.AddFilter(FilterFactory.CreateCropFilter(new Windows.Foundation.Rect(images.IndexOf(img) % 6 * 75, images.IndexOf(img) / 6 * 75, 75, 75)));
if (selectedFilter != null) _session.AddFilter(selectedFilter);
await _session.RenderToImageAsync(img, OutputOption.PreserveAspectRatio);
if (selectedFilter != null && _session.CanUndo()) _session.Undo();
if (_session.CanUndo()) _session.Undo();
}
}
}
catch (Exception exception)
{
MessageBox.Show("Exception:" + exception.Message);
return;
}
if (playMode == PlayMode.CameraVideo) { processNextFrame(); }
}
示例6: RenderBitmapAsync
/// <summary>
/// Renders current image with applied filters to the given bitmap.
/// </summary>
/// <param name="bitmap">Bitmap to render to</param>
public async Task RenderBitmapAsync(WriteableBitmap bitmap)
{
await _session.RenderToBitmapAsync(bitmap.AsBitmap());
}
示例7: AttemptUpdatePreviewAsync
private async void AttemptUpdatePreviewAsync()
{
if (!Processing)
{
Processing = true;
do
{
_processingPending = false;
if (Model.OriginalImage != null && ForegroundAnnotationsDrawn && BackgroundAnnotationsDrawn)
{
Model.OriginalImage.Position = 0;
var maskBitmap = new WriteableBitmap((int)AnnotationsCanvas.ActualWidth, (int)AnnotationsCanvas.ActualHeight);
var annotationsBitmap = new WriteableBitmap((int)AnnotationsCanvas.ActualWidth, (int)AnnotationsCanvas.ActualHeight);
annotationsBitmap.Render(AnnotationsCanvas, new ScaleTransform
{
ScaleX = 1,
ScaleY = 1
});
annotationsBitmap.Invalidate();
Model.OriginalImage.Position = 0;
using (var source = new StreamImageSource(Model.OriginalImage))
using (var segmenter = new InteractiveForegroundSegmenter(source))
using (var renderer = new WriteableBitmapRenderer(segmenter, maskBitmap))
using (var annotationsSource = new BitmapImageSource(annotationsBitmap.AsBitmap()))
{
var foregroundColor = Model.ForegroundBrush.Color;
var backgroundColor = Model.BackgroundBrush.Color;
segmenter.ForegroundColor = Windows.UI.Color.FromArgb(foregroundColor.A, foregroundColor.R, foregroundColor.G, foregroundColor.B);
segmenter.BackgroundColor = Windows.UI.Color.FromArgb(backgroundColor.A, backgroundColor.R, backgroundColor.G, backgroundColor.B);
segmenter.Quality = 0.5;
segmenter.AnnotationsSource = annotationsSource;
await renderer.RenderAsync();
MaskImage.Source = maskBitmap;
maskBitmap.Invalidate();
Model.AnnotationsBitmap = (Bitmap)annotationsBitmap.AsBitmap();
}
}
else
{
MaskImage.Source = null;
}
}
while (_processingPending && !_manipulating);
Processing = false;
}
else
{
_processingPending = true;
}
}
示例8: RenderThumbnailsAsync
/// <summary>
/// For the given bitmap renders filtered thumbnails for each filter in given list and populates
/// the given wrap panel with the them.
///
/// For quick rendering, renders 10 thumbnails synchronously and then releases the calling thread.
/// </summary>
/// <param name="bitmap">Source bitmap to be filtered</param>
/// <param name="side">Side length of square thumbnails to be generated</param>
/// <param name="list">List of filters to be used, one per each thumbnail to be generated</param>
/// <param name="panel">Wrap panel to be populated with the generated thumbnails</param>
private async Task RenderThumbnailsAsync(Bitmap bitmap, int side, List<FilterModel> list, WrapPanel panel)
{
using (EditingSession session = new EditingSession(bitmap))
{
int i = 0;
foreach (FilterModel filter in list)
{
WriteableBitmap writeableBitmap = new WriteableBitmap(side, side);
foreach (IFilter f in filter.Components)
{
session.AddFilter(f);
}
Windows.Foundation.IAsyncAction action = session.RenderToBitmapAsync(writeableBitmap.AsBitmap());
i++;
if (i % 10 == 0)
{
// async, give control back to UI before proceeding.
await action;
}
else
{
// synchroneous, we keep the CPU for ourselves.
Task task = action.AsTask();
task.Wait();
}
PhotoThumbnail photoThumbnail = new PhotoThumbnail()
{
Bitmap = writeableBitmap,
Text = filter.Name,
Width = side,
Margin = new Thickness(6)
};
photoThumbnail.Tap += (object sender, System.Windows.Input.GestureEventArgs e) =>
{
App.PhotoModel.ApplyFilter(filter);
App.PhotoModel.Dirty = true;
NavigationService.GoBack();
};
panel.Children.Add(photoThumbnail);
session.UndoAll();
}
}
}
示例9: PrepareImageForUploadAsync
public async void PrepareImageForUploadAsync()
{
WriteableBitmap bmp = new WriteableBitmap(OriginalImage);
bitmapStream = new MemoryStream();
bmp.SaveJpeg(bitmapStream, bmp.PixelWidth, bmp.PixelHeight, 0, 100);
IBuffer bmpBuffer = bitmapStream.GetWindowsRuntimeBuffer();
// Output buffer
bitmapForUpload = new WriteableBitmap(bmp.PixelWidth, bmp.PixelHeight);
using (EditingSession editsession = new EditingSession(bmpBuffer))
{
// First add an antique effect
foreach (FilterBase fx in FilterManager.AppliedFilters)
{
editsession.AddFilter(fx.FinalOutputFilter);
}
// Finally, execute the filtering and render to a bitmap
await editsession.RenderToBitmapAsync(bitmapForUpload.AsBitmap());
bitmapForUpload.Invalidate();
bitmapStream.Close();
bitmapStream = null;
}
Dispatcher.BeginInvoke(() => {
BeginUpload();
});
}