public void Initialize(D3D11RenderBackend backend) { RenderBackend = backend; if (RT2D == null) { return; } m_HistoryColorBrush = ToDispose(new SolidColorBrush(RT2D, Color.White)); m_ErrorColorBrush = ToDispose(new SolidColorBrush(RT2D, Color.Red)); m_CommandColorBrush = ToDispose(new SolidColorBrush(RT2D, Color.Yellow)); m_TextFormat = ToDispose(new TextFormat(FactoryDWrite, "Roboto", 15) { TextAlignment = TextAlignment.Leading, ParagraphAlignment = ParagraphAlignment.Near }); m_FPSTextFormat = ToDispose(new TextFormat(FactoryDWrite, "Roboto", 20) { TextAlignment = TextAlignment.Trailing, ParagraphAlignment = ParagraphAlignment.Near }); m_RectangleGeometry = ToDispose(new RoundedRectangleGeometry(RenderBackend.DisplayRef.Factory2D, new RoundedRectangle() { RadiusX = 0, RadiusY = 0, Rect = new RectangleF(0, 0, 500, 1200) })); m_TextLayout = ToDispose(new TextLayout(FactoryDWrite, "", m_TextFormat, 500, 20)); m_HistoryTextLayout = ToDispose(new TextLayout(FactoryDWrite, "", m_TextFormat, 500, 200)); m_CaretTextLayout = ToDispose(new TextLayout(FactoryDWrite, "", m_TextFormat, 500, 20)); m_SolidColorBrush = ToDispose(new SolidColorBrush(RT2D, new Color(new Vector4(0.7f, 0.7f, 0.7f, 0.6f)))); m_FPSTextLayout = ToDispose(new TextLayout(FactoryDWrite, "", m_FPSTextFormat, 100, 100)); }
public override bool HitTest(Point2F point) { RoundedRectangleGeometry g = d2DFactory.CreateRoundedRectangleGeometry(rect); bool ret = g.FillContainsPoint(point, 1); g.Dispose(); return(ret); }
public void Initialize(Presenter presenter) { // https://msdn.microsoft.com/en-us/library/windows/desktop/mt186590(v=vs.85).aspx Presenter = presenter; Device3D11 = Device3D11.CreateFromDirect3D12( Device.NativeDevice, DeviceCreationFlags.BgraSupport,// | DeviceCreationFlags.Debug, null, null, presenter.NativeCommandQueue); DeviceContext3D = Device3D11.ImmediateContext; Device3D = Device3D11.QueryInterface <Device3D>(); // create d2d/directwrite using (var factory = new Factory(FactoryType.SingleThreaded)) { Factory = factory.QueryInterface <Factory1>(); } RoundedRectangleGeometry = new RoundedRectangleGeometry( Factory, new RoundedRectangle() { RadiusX = 32, RadiusY = 32, Rect = new RectangleF(128, 128, 500 - 128 * 2, 500 - 128 * 2) }); // direct write FactoryDW = new FactoryDW(SharpDX.DirectWrite.FactoryType.Shared); FontLoader = new ResourceFontLoader(FactoryDW, @"Fonts"); FontCollection = new FontCollection(FactoryDW, FontLoader, FontLoader.Key); TextFormat = new TextFormat( FactoryDW, "Material-Design-Iconic-Font", FontCollection, SharpDX.DirectWrite.FontWeight.Normal, FontStyle.Normal, FontStretch.Normal, 30); TextFormat.TextAlignment = TextAlignment.Leading; TextFormat.ParagraphAlignment = ParagraphAlignment.Near; DeviceContextOptions deviceOptions = DeviceContextOptions.None; using (var deviceGI = Device3D.QueryInterface <DeviceGI>()) { Device2D = new Device(Factory, deviceGI); DeviceContext = new DeviceContext(Device2D, deviceOptions); } DesktopDpi = Factory.DesktopDpi; InitializePresentable(Device); }
private static void Main() { var wicFactory = new ImagingFactory(); var d2dFactory = new SharpDX.Direct2D1.Factory(); string filename = "output.jpg"; const int width = 512; const int height = 512; var rectangleGeometry = new RoundedRectangleGeometry(d2dFactory, new RoundedRectangle() { RadiusX = 32, RadiusY = 32, Rect = new RectangleF(128, 128, width - 128 * 2, height - 128 * 2) }); var wicBitmap = new Bitmap(wicFactory, width, height, SharpDX.WIC.PixelFormat.Format32bppBGR, BitmapCreateCacheOption.CacheOnLoad); var renderTargetProperties = new RenderTargetProperties(RenderTargetType.Default, new PixelFormat(Format.Unknown, AlphaMode.Unknown), 0, 0, RenderTargetUsage.None, FeatureLevel.Level_DEFAULT); var d2dRenderTarget = new WicRenderTarget(d2dFactory, wicBitmap, renderTargetProperties); var solidColorBrush = new SolidColorBrush(d2dRenderTarget, Color.White); d2dRenderTarget.BeginDraw(); d2dRenderTarget.Clear(Color.Black); d2dRenderTarget.FillGeometry(rectangleGeometry, solidColorBrush, null); d2dRenderTarget.EndDraw(); if (File.Exists(filename)) { File.Delete(filename); } var stream = new WICStream(wicFactory, filename, NativeFileAccess.Write); // Initialize a Jpeg encoder with this stream var encoder = new JpegBitmapEncoder(wicFactory); encoder.Initialize(stream); // Create a Frame encoder var bitmapFrameEncode = new BitmapFrameEncode(encoder); bitmapFrameEncode.Initialize(); bitmapFrameEncode.SetSize(width, height); var pixelFormatGuid = SharpDX.WIC.PixelFormat.FormatDontCare; bitmapFrameEncode.SetPixelFormat(ref pixelFormatGuid); bitmapFrameEncode.WriteSource(wicBitmap); bitmapFrameEncode.Commit(); encoder.Commit(); bitmapFrameEncode.Dispose(); encoder.Dispose(); stream.Dispose(); System.Diagnostics.Process.Start(Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, filename))); }
public void MoveMoveHandler(object sender, MouseEventArgs e) { Point2F location = Tools.PointToPoint2F(e.Location); PolarCoordinate coordinate = displayer.coordinateSystem.PointToCoordinate(location); azString = "方位:" + coordinate.Az.ToString("0.0") + "°"; disString = "距离:" + coordinate.ProjectedDis.ToString("0.0") + "m"; RectF rect = new RectF(location.X + 10, location.Y + 30, location.X + 60, location.Y + 80); coordinateBoard?.Dispose(); coordinateBoard = displayer.Factory.CreateRoundedRectangleGeometry(new RoundedRect(rect, 5, 5)); }
public Rectangle(float x, float y, float w, float h, float xRadius = 0, float yRadius = 0) : base() { RectangleF rect = new RectangleF(x, y, w, h); rectGeometry = new RectangleGeometry(factory, rect); if (xRadius > 0 || yRadius > 0) { roundRectGeometry = new RoundedRectangleGeometry(factory, new RoundedRectangle() { Rect = rect, RadiusX = xRadius, RadiusY = yRadius }); } }
protected virtual void Render(RenderTarget rt) { RenderTarget2D.Clear(SceneColorBrush.Color); var width = ClientSize.Width; var height = ClientSize.Height; float indent = ImagePadding; float rcRad = indent * 1.5f; using (var rcG = new RoundedRectangleGeometry(Factory2D, new RoundedRectangle() { RadiusX = rcRad, RadiusY = rcRad, Rect = new RectangleF(indent, indent, width - indent * 2, height - indent * 2) })) using (var sBr = new SolidColorBrush(RenderTarget2D, Color.Black)) RenderTarget2D.FillGeometry(rcG, sBr, null); }
public void RoundedRectangle(Rectangle rectangle, double cornerRadius) { endOpenFigure(); using (var geometry = new RoundedRectangleGeometry(_factory, new RoundedRect { RadiusX = cornerRadius.import(), RadiusY = cornerRadius.import(), Rect = Import.Rectangle(rectangle) })) { geometry.Simplify(SimplificationOption, _sink); } }
protected override RoundedRectangleGeometry BuildIdTag() { RectF rect = new RectF(); rect.Left = projectivePosition.X + 5; rect.Bottom = projectivePosition.Y - 10; rect.Right = rect.Left + idTagWidth; rect.Top = rect.Bottom - idTagHeigth; idTextRect = rect; idTextRect.Left += 12; RoundedRectangleGeometry idTag = View.Factory.CreateRoundedRectangleGeometry(new RoundedRect(rect, 3, 3)); return(idTag); }
protected override RoundedRectangleGeometry BuildIdTag() { RectF rect = new RectF { Left = View.Position.X - 20, Top = View.Position.Y - 35 }; rect.Right = rect.Left + idTagWidth; rect.Bottom = rect.Top + idTagHeigth; idTextRect = rect; idTextRect.Left += 12; RoundedRectangleGeometry idTag = View.Factory.CreateRoundedRectangleGeometry(new RoundedRect(rect, 3, 3)); return(idTag); }
protected override Geometry CreateHitGeometryByD2D(D2DGraphics g) { RawRectangleF rect = new RawRectangleF( 0, 0, Width - 1, Height - 1); RoundedRectangle roundedRect = new RoundedRectangle() { RadiusX = this.RadiusX, RadiusY = this.RadiusY, Rect = rect }; RoundedRectangleGeometry roundedRectGeo = new RoundedRectangleGeometry(D2DGraphics.d2dFactory, roundedRect); return(roundedRectGeo); }
public RenderTarget CreateRenderTarget(RenderForm form) { var desc = new SwapChainDescription() { BufferCount = 1, ModeDescription = new ModeDescription(form.ClientSize.Width, form.ClientSize.Height, new Rational(60, 1), Format.R8G8B8A8_UNorm), IsWindowed = true, OutputHandle = form.Handle, SampleDescription = new SampleDescription(2, 0), SwapEffect = SwapEffect.Discard, Usage = Usage.RenderTargetOutput }; Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.BgraSupport, new SharpDX.Direct3D.FeatureLevel[] { SharpDX.Direct3D.FeatureLevel.Level_10_0 }, desc, out device, out swapChain); var d2dFactory = new SharpDX.Direct2D1.Factory(); int width = form.ClientSize.Width; int height = form.ClientSize.Height; var rectangleGeometry = new RoundedRectangleGeometry(d2dFactory, new RoundedRectangle() { RadiusX = 32, RadiusY = 32, Rect = new RectangleF(128, 128, width - 128 * 2, height - 128 * 2) }); factory = swapChain.GetParent <Factory>(); factory.MakeWindowAssociation(form.Handle, WindowAssociationFlags.IgnoreAll); backBuffer = Texture2D.FromSwapChain <Texture2D>(swapChain, 0); renderView = new RenderTargetView(device, backBuffer); Surface surface = backBuffer.QueryInterface <Surface>(); RenderTarget d2dRenderTarget = new RenderTarget(d2dFactory, surface, new RenderTargetProperties(new SharpDX.Direct2D1.PixelFormat(Format.Unknown, AlphaMode.Premultiplied))); return(d2dRenderTarget); }
private static void Main() { var form = new RenderForm("SharpDX - MiniTri Direct2D - Direct3D 10 Sample"); // SwapChain description var desc = new SwapChainDescription() { BufferCount = 1, ModeDescription = new ModeDescription(form.ClientSize.Width, form.ClientSize.Height, new Rational(60, 1), Format.R8G8B8A8_UNorm), IsWindowed = true, OutputHandle = form.Handle, SampleDescription = new SampleDescription(1, 0), SwapEffect = SwapEffect.Discard, Usage = Usage.RenderTargetOutput }; // Create Device and SwapChain Device1 device; SwapChain swapChain; Device1.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.Debug | DeviceCreationFlags.BgraSupport, desc, FeatureLevel.Level_10_0, out device, out swapChain); var d2dFactory = new SharpDX.Direct2D1.Factory(); int width = form.ClientSize.Width; int height = form.ClientSize.Height; var rectangleGeometry = new RoundedRectangleGeometry(d2dFactory, new RoundedRect() { RadiusX = 32, RadiusY = 32, Rect = new RectangleF(128, 128, width - 128, height - 128) }); // Ignore all windows events Factory factory = swapChain.GetParent <Factory>(); factory.MakeWindowAssociation(form.Handle, WindowAssociationFlags.IgnoreAll); // New RenderTargetView from the backbuffer Texture2D backBuffer = Texture2D.FromSwapChain <Texture2D>(swapChain, 0); var renderView = new RenderTargetView(device, backBuffer); Surface surface = backBuffer.QueryInterface <Surface>(); var d2dRenderTarget = new RenderTarget(d2dFactory, surface, new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied))); var solidColorBrush = new SolidColorBrush(d2dRenderTarget, new Color4(1, 1, 1, 1)); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // Main loop RenderLoop.Run(form, () => { d2dRenderTarget.BeginDraw(); d2dRenderTarget.Clear(new Color4(1.0f, 0.0f, 0.0f, 0.0f)); solidColorBrush.Color = new Color4((float)Math.Abs(Math.Cos(stopwatch.ElapsedMilliseconds * .001)), 1, 1, 1); d2dRenderTarget.FillGeometry(rectangleGeometry, solidColorBrush, null); d2dRenderTarget.EndDraw(); swapChain.Present(0, PresentFlags.None); }); // Release all resources renderView.Release(); backBuffer.Release(); device.ClearState(); device.Flush(); device.Release(); device.Release(); swapChain.Release(); factory.Release(); }
protected void Initialize() { apple = new Apple() { x = 3, y = 3 }; snake = new Snake() { x = 10, y = 10, dy = 1 }; rng = new Random(); // SwapChain description var desc = new SwapChainDescription() { BufferCount = 1, ModeDescription = new ModeDescription(form.ClientSize.Width, form.ClientSize.Height, new Rational(Constants.FRAMES_PER_SECOND, 1), Format.R8G8B8A8_UNorm), IsWindowed = true, OutputHandle = form.Handle, SampleDescription = new SampleDescription(1, 0), SwapEffect = SwapEffect.Discard, Usage = Usage.RenderTargetOutput }; // Create Device and SwapChain Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.BgraSupport, new SharpDX.Direct3D.FeatureLevel[] { SharpDX.Direct3D.FeatureLevel.Level_10_0 }, desc, out device, out swapChain); d2dFactory = new SharpDX.Direct2D1.Factory(); int width = form.ClientSize.Width; int height = form.ClientSize.Height; // Ignore all windows events factory = swapChain.GetParent <Factory>(); factory.MakeWindowAssociation(form.Handle, WindowAssociationFlags.IgnoreAll); // New RenderTargetView from the backbuffer backBuffer = Texture2D.FromSwapChain <Texture2D>(swapChain, 0); renderView = new RenderTargetView(device, backBuffer); Surface surface = backBuffer.QueryInterface <Surface>(); d2dRenderTarget = new RenderTarget(d2dFactory, surface, new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied))); var rectangleGeometry = new RoundedRectangleGeometry(d2dFactory, new RoundedRectangle() { RadiusX = 32, RadiusY = 32, Rect = new RectangleF(128, 128, width - 128 * 2, height - 128 * 2) }); var solidColorBrush = new SolidColorBrush(d2dRenderTarget, Color.White); var directInput = new DirectInput(); keyboard = new Keyboard(directInput); keyboard.Acquire(); apple.Initialize(d2dRenderTarget, Color.Red); snake.Initialize(d2dRenderTarget, Color.Green); }
public static void Run(WorldBase world, int wndWidth = 1280, int wndHeight = 720, string windowTitle = "Ants", int targetFamerate = 60) { var form = new RenderForm(windowTitle) { ClientSize = new System.Drawing.Size(wndWidth, wndHeight) }; // SwapChain description var desc = new SwapChainDescription() { BufferCount = 1, ModeDescription = new ModeDescription(form.ClientSize.Width, form.ClientSize.Height, new Rational(60, 1), Format.R8G8B8A8_UNorm), IsWindowed = true, OutputHandle = form.Handle, SampleDescription = new SampleDescription(1, 0), SwapEffect = SwapEffect.Discard, Usage = Usage.RenderTargetOutput }; // Create Device and SwapChain Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.BgraSupport, new SharpDX.Direct3D.FeatureLevel[] { SharpDX.Direct3D.FeatureLevel.Level_10_0 }, desc, out var device, out var swapChain); var d2dFactory = new SharpDX.Direct2D1.Factory(); int width = form.ClientSize.Width; int height = form.ClientSize.Height; var rectangleGeometry = new RoundedRectangleGeometry(d2dFactory, new RoundedRectangle() { RadiusX = 32, RadiusY = 32, Rect = new RectangleF(128, 128, width - 128 * 2, height - 128 * 2) }); // Ignore all windows events Factory factory = swapChain.GetParent <Factory>(); factory.MakeWindowAssociation(form.Handle, WindowAssociationFlags.IgnoreAll); // New RenderTargetView from the backbuffer Texture2D backBuffer = Texture2D.FromSwapChain <Texture2D>(swapChain, 0); var renderView = new RenderTargetView(device, backBuffer); Surface surface = backBuffer.QueryInterface <Surface>(); var d2dRenderTarget = new RenderTarget(d2dFactory, surface, new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied))); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // Main loop RenderLoop.Run(form, () => { d2dRenderTarget.BeginDraw(); d2dRenderTarget.Clear(Color.Aqua); world.RenderLoop(stopwatch, d2dRenderTarget); d2dRenderTarget.EndDraw(); swapChain.Present(0, PresentFlags.None); }); // Release all resources renderView.Dispose(); backBuffer.Dispose(); device.ImmediateContext.ClearState(); device.ImmediateContext.Flush(); device.Dispose(); device.Dispose(); swapChain.Dispose(); factory.Dispose(); }
public void FillRoundedRectangle([NotNull] Brush brush, RoundedRectangle roundedRectangle) { var roundedRectGeo = new RoundedRectangleGeometry(roundedRectangle); FillGeometry(brush, roundedRectGeo); }
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { // TODO: use this.Content to load your game content here _drawingContext = new DrawingContext(GraphicsDevice, GraphicsBackend.OpenGL); _brush1 = new SolidColorBrush(_drawingContext, Color.Black); _brush2 = new SolidColorBrush(_drawingContext, Color.Red); _brush3 = new SolidColorBrush(_drawingContext, Color.Yellow); _brush4 = new SolidColorBrush(_drawingContext, Color.Purple); _brush5 = new SolidColorBrush(_drawingContext, Color.Blue); _brush6 = new LinearGradientBrush(_drawingContext, new LinearGradientBrushProperties { StartPoint = new Vector2(305, 305), EndPoint = new Vector2(405, 405) }, new GradientStopCollection(new[] { new GradientStop { Color = Color.Red, Position = 0.0f }, new GradientStop { Color = Color.Yellow, Position = 0.4f }, new GradientStop { Color = Color.Blue, Position = 0.8f }, new GradientStop { Color = Color.Cyan, Position = 1.0f } }, Gamma.Linear, ExtendMode.Mirror)); var pathGeometry = new PathGeometry(); _pathGeometry1 = pathGeometry; var sink = pathGeometry.Open(); sink.BeginFigure(Vector2.Zero); sink.AddLine(new Vector2(100, 100)); sink.AddLine(new Vector2(0, 100)); sink.EndFigure(FigureEnd.Closed); sink.Close(); pathGeometry = new PathGeometry(); _pathGeometry2 = pathGeometry; sink = pathGeometry.Open(); sink.BeginFigure(Vector2.Zero); sink.AddBezier(new BezierSegment { Point1 = new Vector2(100, 0), Point2 = new Vector2(0, 100), Point3 = new Vector2(100, 100) }); sink.AddLine(new Vector2(100, 0)); sink.EndFigure(FigureEnd.Closed); sink.Close(); pathGeometry = new PathGeometry(); _pathGeometry3 = pathGeometry; sink = pathGeometry.Open(); sink.BeginFigure(new Vector2(200, 200)); sink.AddArc(new ArcSegment { Size = new Vector2(50, 50), ArcSize = ArcSize.Large, Point = new Vector2(300, 300), RotationAngle = 0, SweepDirection = SweepDirection.Clockwise }); sink.AddArc(new ArcSegment { Size = new Vector2(100, 100), ArcSize = ArcSize.Large, Point = new Vector2(100, 200), RotationAngle = 0, SweepDirection = SweepDirection.Clockwise }); sink.EndFigure(FigureEnd.Closed); sink.Close(); _ellipseGeometry4 = new EllipseGeometry(new Ellipse { Point = new Vector2(400, 50), RadiusX = 50, RadiusY = 10 }); _roundedRectangleGeometry5 = new RoundedRectangleGeometry(new RoundedRectangle { RadiusX = 30, RadiusY = 20, Rectangle = new RectangleF(0, 300, 100, 100) }); _ellipseGeometry6 = new EllipseGeometry(new Ellipse { Point = new Vector2(350, 300), RadiusX = 160, RadiusY = 120 }); _fontPathGeometry7 = PathGeometry.CreateFromString(_font, "Press space to start"); }
public void DrawRoundedRectangle([NotNull] Pen pen, RoundedRectangle roundedRectangle) { var roundedRectGeo = new RoundedRectangleGeometry(roundedRectangle); DrawGeometry(pen, roundedRectGeo); }