本文整理汇总了C#中System.Windows.Media.DrawingVisual类的典型用法代码示例。如果您正苦于以下问题:C# DrawingVisual类的具体用法?C# DrawingVisual怎么用?C# DrawingVisual使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
DrawingVisual类属于System.Windows.Media命名空间,在下文中一共展示了DrawingVisual类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateBitmap
public void CreateBitmap()
{
int width = 100;
int height = 100;
int dpi = 96;
Tracing.Log(">> CreateBitmap");
var thread = new Thread(new ThreadStart(() =>
{
Tracing.Log(">> CreateBitmap - Thread start; creating drawing visual");
//Dispatcher.Invoke(new Action(() => {
_drawingVisual = new DrawingVisual();
_drawingContext = _drawingVisual.RenderOpen();
//}));
Tracing.Log(">> CreateBitmap - Drawing to context");
_drawingContext.DrawRectangle(new SolidColorBrush(Colors.HotPink), new Pen(), new Rect(0, 0, 50, 50));
_drawingContext.DrawRectangle(new SolidColorBrush(Colors.Blue), new Pen(), new Rect(50, 0, 50, 50));
_drawingContext.DrawRectangle(new SolidColorBrush(Colors.Orange), new Pen(), new Rect(0, 50, 50, 50));
_drawingContext.DrawRectangle(new SolidColorBrush(Colors.DarkRed), new Pen(), new Rect(50, 50, 50, 50));
_drawingContext.Close();
Tracing.Log(">> CreateBitmap - Finished drawing; creating render target bitmap");
_bitmap = new RenderTargetBitmap(width, height, dpi, dpi, PixelFormats.Default);
_bitmap.Render(_drawingVisual);
Tracing.Log(">> CreateBitmap - Finished work");
_bitmap.Freeze();
}));
//thread.IsBackground = true;
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
示例2: ButtonSave_Click
private void ButtonSave_Click(object sender, RoutedEventArgs e)
{
var rect = new Rect { Width = 512, Height = 384 };
var dv = new DrawingVisual();
var dc = dv.RenderOpen();
dc.PushTransform(new TranslateTransform(-rect.X, -rect.Y));
dc.DrawRectangle(InkCanvasMain.Background, null, rect);
InkCanvasMain.Strokes.Draw(dc);
dc.Close();
var rtb = new RenderTargetBitmap((int)rect.Width, (int)rect.Height, 96, 96, PixelFormats.Default);
rtb.Render(dv);
var enc = new PngBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(rtb));
var fn = TextBoxFileName.Text;
if (!fn.EndsWith(".png", StringComparison.OrdinalIgnoreCase)) fn += ".png";
using (Stream s = File.Create(TegakiImageFolder + "/" + fn))
{
enc.Save(s);
}
((TegakiWindowViewModel)DataContext).AddToMediaList(System.IO.Path.GetFullPath(TegakiImageFolder + "/" + fn));
Close();
}
示例3: RenderMyVisual
private void RenderMyVisual(DrawingVisual v)
{
using (var dc = v.RenderOpen())
{
RenderRectangles(dc);
}
}
示例4: DrawGraphicsOnBitmap
public DrawGraphicsOnBitmap()
{
Title = "Draw Graphics on Bitmap";
// ��Ʈ���� ������� �����ϱ� ���� ����� ������.
Background = Brushes.Khaki;
// RenderTargetBitmap ������.
RenderTargetBitmap renderbitmap = new RenderTargetBitmap(100, 100, 96, 96, PixelFormats.Default);
// DrawingVisual ��ü�� ������.
DrawingVisual drawvis = new DrawingVisual();
DrawingContext dc = drawvis.RenderOpen(); // Render �ҵ� ȣ��
dc.DrawRoundedRectangle(Brushes.Blue, new Pen(Brushes.Red, 10),
new Rect(25, 25, 50, 50), 10, 10);
dc.Close();
// RenderTargetBitmap ���� DrawingVisual ��ü�� ��.
renderbitmap.Render(drawvis);
// �̹��� ��ä ���� -> ������Ƽ ����
Image img = new Image();
img.Source = renderbitmap;
// ���
Content = img;
}
示例5: GetEffect
protected override Effect GetEffect(FastBitmap source)
{
// Fill temporary graphics buffer with mask (currently always a rectangle).
DrawingVisual dv = new DrawingVisual
{
Effect = new BlurEffect
{
Radius = Radius,
KernelType = KernelType.Gaussian
}
};
DrawingContext dc = dv.RenderOpen();
dc.DrawImage(source.InnerBitmap, new Rect(0, 0, source.Width, source.Height));
dc.Close();
RenderTargetBitmap rtb = RenderTargetBitmapUtility.CreateRenderTargetBitmap(source.Width, source.Height);
rtb.Render(dv);
Brush blurredImage = new ImageBrush(rtb);
return new UnsharpMaskEffect
{
BlurMask = blurredImage,
Amount = Amount / 100.0,
Threshold = Threshold
};
}
示例6: GetImage
public static RenderTargetBitmap GetImage(UIElement fe, Brush background = null, Size sz = default(Size), int dpi = 144)
{
if (sz.Width < alib.Math.math.ε || sz.Height < alib.Math.math.ε)
{
fe.Measure(util.infinite_size);
sz = fe.DesiredSize; //VisualTreeHelper.GetContentBounds(fe).Size; //
}
DrawingVisual dv = new DrawingVisual();
RenderOptions.SetEdgeMode(dv, EdgeMode.Aliased);
using (DrawingContext ctx = dv.RenderOpen())
{
Rect r = new Rect(0, 0, sz.Width, sz.Height);
if (background != null)
ctx.DrawRectangle(background, null, r);
VisualBrush br = new VisualBrush(fe);
br.AutoLayoutContent = true;
ctx.DrawRectangle(br, null, r);
}
Double f = dpi / 96.0;
RenderTargetBitmap bitmap = new RenderTargetBitmap(
(int)(sz.Width * f) + 1,
(int)(sz.Height * f) + 1,
dpi,
dpi,
PixelFormats.Pbgra32);
bitmap.Render(dv);
return bitmap;
}
示例7: CreateImage
protected override sealed void CreateImage()
{
base.CreateImage();
Rect bounds = new Rect(StrokeWidth / 2, StrokeWidth / 2,
CalculatedWidth - StrokeWidth,
CalculatedHeight - StrokeWidth);
Brush brush = Fill.GetBrush();
PointCollection points = GetPoints(bounds);
PathGeometry geometry = CanonicalSplineHelper.CreateSpline(points, Roundness / 100.0, null, true, true, 0.25);
Pen pen = GetPen();
DrawingVisual dv = new DrawingVisual();
DrawingContext dc = dv.RenderOpen();
// Draw polygon.
dc.DrawGeometry(brush, pen, geometry);
dc.Close();
RenderTargetBitmap rtb = RenderTargetBitmapUtility.CreateRenderTargetBitmap(CalculatedWidth, CalculatedHeight);
rtb.Render(dv);
Bitmap = new FastBitmap(rtb);
}
示例8: ApplyFilter
/// <summary>
/// Applies the filter to the specified <paramref name="bitmap"/>. This method
/// first calls <see cref="ImageReplacementFilter.GetDestinationDimensions(FastBitmap, out Int32, out Int32)" />
/// to calculate the size of the destination image. Then it calls
/// <see cref="ImageReplacementFilter.ApplyFilter(FastBitmap, DrawingContext, int, int)" />
/// which is where the overridden class implements its filter algorithm.
/// </summary>
/// <param name="bitmap">
/// Image to apply the <see cref="ImageReplacementFilter" /> to.
/// </param>
public override sealed void ApplyFilter(FastBitmap bitmap)
{
OnBeginApplyFilter(bitmap);
// get destination dimensions
int width, height;
bool shouldContinue = GetDestinationDimensions(bitmap, out width, out height);
if (!shouldContinue)
return;
DrawingVisual dv = new DrawingVisual();
ConfigureDrawingVisual(bitmap, dv);
DrawingContext dc = dv.RenderOpen();
ApplyFilter(bitmap, dc, width, height);
dc.Close();
RenderTargetBitmap rtb = RenderTargetBitmapUtility.CreateRenderTargetBitmap(width, height);
rtb.Render(dv);
FastBitmap destination = new FastBitmap(rtb);
// copy metadata
// TODO
/*foreach (PropertyItem propertyItem in bitmap.InnerBitmap.PropertyItems)
destination.InnerBitmap.SetPropertyItem(propertyItem);*/
// set new image
bitmap.InnerBitmap = destination.InnerBitmap;
OnEndApplyFilter();
}
示例9: VisualPaginator
public VisualPaginator(DrawingVisual source, Size printSize, Thickness pageMargins, Thickness originalMargin)
{
DrawingVisual = source;
_printSize = printSize;
PageMargins = pageMargins;
_originalMargin = originalMargin;
}
示例10: CreateImage
private ImageSource CreateImage(CustomMaterial material)
{
var bitmapSourceBackground = material.FlyerFrontSide.ToBitmapImage();
var visual = new DrawingVisual();
using (var drawingContext = visual.RenderOpen())
{
drawingContext.PushClip(new RectangleGeometry(new Rect(0, 0, bitmapSourceBackground.Width, bitmapSourceBackground.Height)));
drawingContext.DrawImage(bitmapSourceBackground, new Rect(0, 0, bitmapSourceBackground.Width, bitmapSourceBackground.Height));
foreach (var textField in material.MaterialFields.Select(materialToTextFieldConverter.CreateTextField))
{
drawingContext.DrawText(textField.FormattedText, textField.Origin);
}
if (material.CustomLogo.HasLogo)
{
var flyerLogo = material.CustomLogo.Logo.ToBitmapImage();
drawingContext.DrawImage(flyerLogo, new Rect(material.CustomLogo.LogoLeftMargin, material.CustomLogo.LogoTopMargin, material.CustomLogo.LogoWidth, material.CustomLogo.LogoHeight));
}
}
var image = new DrawingImage(visual.Drawing);
image.Freeze();
return image;
}
示例11: DrawContextualMenu
internal static void DrawContextualMenu(DrawingVisual drawingVisual, Dictionary<int, string> itemsList)
{
//draw the stuff
//3 cases
//menu items == 7
//menu items < 7
//menu items > 7
DrawingContext context = drawingVisual.RenderOpen();
int itemsCount = itemsList.Count;
if (itemsCount == 7)
{
}
if (itemsCount < 7)
{
}
if (itemsCount > 7)
{
}
// position the menu correctly
}
示例12: SelectionRectVisual
/// <summary>
/// Construct new SelectionRectVisual object for the given rectangle
/// </summary>
public SelectionRectVisual(Point firstPointP, Point secondPointP, double zoomP)
{
DrawingGroup drawing = new DrawingGroup();
DrawingContext context = drawing.Open();
context.DrawRectangle(Brushes.White, null, new Rect(-1, -1, 3, 3));
context.DrawRectangle(Brushes.Black, null, new Rect(0.25, -1, 0.5, 3));
context.Close();
drawing.Freeze();
// Create a drawing brush that tiles the unit square from the drawing created above.
// The size of the viewport and the rotation angle will be updated as we use the
// dashed pen.
DrawingBrush drawingBrush = new DrawingBrush(drawing);
drawingBrush.ViewportUnits = BrushMappingMode.Absolute;
drawingBrush.Viewport = new Rect(0, 0, _dashRepeatLength, _dashRepeatLength);
drawingBrush.ViewboxUnits = BrushMappingMode.Absolute;
drawingBrush.Viewbox = new Rect(0, 0, 1, 1);
drawingBrush.Stretch = Stretch.Uniform;
drawingBrush.TileMode = TileMode.Tile;
// Store the drawing brush and a copy that's rotated by 90 degrees.
_horizontalDashBrush = drawingBrush;
_verticalDashBrush = drawingBrush.Clone();
_verticalDashBrush.Transform = new RotateTransform(90);
this._firstPoint = firstPointP;
this._secondPoint = secondPointP;
this._zoom = zoomP;
_visualForRect = new DrawingVisual();
this.AddVisualChild(_visualForRect);
this.AddLogicalChild(_visualForRect);
}
示例13: OnDrawMouseHover
protected override void OnDrawMouseHover()
{
if (this.mouseHoverVisual != null)
{
this.Visuals.Remove(this.mouseHoverVisual);
this.RemoveVisualChild(this.mouseHoverVisual);
}
var mouseHoverTileCoords = this.HoverTile;
if (mouseHoverTileCoords.X < 0 || mouseHoverTileCoords.Y < 0)
{
this.mouseHoverVisual = null;
}
else
{
this.mouseHoverVisual = new DrawingVisual();
var tileRect = this.GetTileRectangleFromTilePoint(mouseHoverTileCoords);
using (var drawingContext = this.mouseHoverVisual.RenderOpen())
{
if (this.DrawPressedTile)
{
drawingContext.DrawImage(this.tileSetImage, tileRect);
}
else
{
drawingContext.DrawRectangle(this.HoverBrush, null, tileRect);
}
}
this.Visuals.Add(this.mouseHoverVisual);
this.AddVisualChild(this.mouseHoverVisual);
}
}
示例14: WaveGraph
public WaveGraph()
{
InitializeComponent();
DrawingVisual ghostVisual;
Width = 300;
Height = 350;
ghostVisual = new DrawingVisual();
using (DrawingContext dc = ghostVisual.RenderOpen())
{
dc.DrawEllipse(Brushes.Black, new Pen(Brushes.Red, 10),
new Point(95, 95), 15, 15);
dc.DrawEllipse(Brushes.Black, new Pen(Brushes.Red, 10),
new Point(170, 105), 15, 15);
Pen p = new Pen(Brushes.Black, 10);
p.StartLineCap = PenLineCap.Round;
p.EndLineCap = PenLineCap.Round;
dc.DrawLine(p, new Point(75, 160), new Point(175, 150));
}
this.AddVisualChild(ghostVisual);
this.AddLogicalChild(ghostVisual);
}
示例15: RadialMenu
public RadialMenu(uint nodeId, Point worldCoords, double radius, Dictionary<int, string> items,
double startAngle, NodePart part)
{
this.startAngle = startAngle * Math.PI / 180;
this.endAngle = (startAngle - 90) * Math.PI / 180; // 90: the radial menu is a quadrant
this.nodePart = part;
this.worldCoords = worldCoords;
this.nodeId = nodeId;
this.radius = radius;
radialMenuVisual = new DrawingVisual();
radialMenuVisual.Transform = new TranslateTransform(worldCoords.X, worldCoords.Y);
SetAnchor();
itemsList = items;
reducedList = items;
InitializeMenuItems();
UpdateItemsArrangement(-1);
InitializeItemWeight();
ValidateScrollers();
Compose();
}