private void MainWindow_Load(object sender, EventArgs e) { if (_dxgiDevice != null) { CleanUp(); } _dxgiDevice = DxgiDevice.CreateDevice(); _factory = Direct2DFactory.CreateFactory(FactoryType.SingleThreaded, DebugLevel.None); using (Device device = _factory.CreateDevice(_dxgiDevice)) { _deviceContext = device.CreateDeviceContext(DeviceContextOptions.None); using (DxgiAdapter adapter = _dxgiDevice.GetAdapter()) using (DxgiFactory factory = adapter.GetFactory()) { _swapChain = factory.CreateSwapChainForHwnd(_dxgiDevice, Handle); _dxgiDevice.MaximumFrameLatency = 1; _swapChain.GetBuffer(0, out _surface); _bitmap = _deviceContext.CreateBitmapFromDxgiSurface(_surface); _deviceContext.SetTarget(_bitmap); } for (int index = 0; index < _brushes.Length; ++index) { _pens[index] = _deviceContext.CreateSolidColorBrush(GetRandomColor(_random, 1)); _brushes[index] = _deviceContext.CreateSolidColorBrush(GetRandomColor(_random, 0.25f)); } } _directWriteFactory = DirectWriteFactory.Create(DirectWriteFactoryType.Shared); }
private async void MainWindow_Load(object sender, EventArgs e) { if (_dxgiDevice != null) { CleanUp(); } _dxgiDevice = DxgiDevice.CreateDevice(); _factory = Direct2DFactory.CreateFactory(FactoryType.SingleThreaded, DebugLevel.None); using (Device device = _factory.CreateDevice(_dxgiDevice)) { _deviceContext = device.CreateDeviceContext(DeviceContextOptions.None); using (DxgiAdapter adapter = _dxgiDevice.GetAdapter()) using (DxgiFactory factory = adapter.GetFactory()) { _swapChain = factory.CreateSwapChainForHwnd(_dxgiDevice, Handle); _dxgiDevice.MaximumFrameLatency = 1; _swapChain.GetBuffer(0, out _surface); _bitmap = _deviceContext.CreateBitmapFromDxgiSurface(_surface); _deviceContext.SetTarget(_bitmap); _brush = _deviceContext.CreateSolidColorBrush(Color.FromRGB(0.1f, 0.75f, 0.5f, 1f)); _brush1 = _deviceContext.CreateSolidColorBrush(Color.FromRGB(0.1f, 0.5f, 0.75f, 1f)); } } _directWriteFactory = DirectWriteFactory.Create(DirectWriteFactoryType.Shared); await CreatePoints(); }
private void Render() { DeviceContext renderTarget = _deviceContext; renderTarget.BeginDraw(); List <Tuple <Geometry, Color> > copy = _task == null ? new List <Tuple <Geometry, Color> >() : _task.Result; _task = CreateGeometries(_time); if (_time == 0.1f) { renderTarget.Clear(Color.FromKnown(Colors.Black, 1f)); } renderTarget.FillRect(_brush, new RectF(0, 0, ClientSize.Width, ClientSize.Height)); for (int index = 0; index < copy.Count; ++index) { Tuple <Geometry, Color> tuple = copy[index]; using (Geometry geometry = tuple.Item1) { using (SolidColorBrush brush = renderTarget.CreateSolidColorBrush(tuple.Item2.AdjustContrast(1.5f))) { renderTarget.DrawGeometry(brush, 0.1f, geometry); } } } renderTarget.EndDraw(); _swapChain.Present(1, 0); _time += 0.002f; }
private async Task Render() { DeviceContext renderTarget = _deviceContext; renderTarget.BeginDraw(); renderTarget.Clear(Color.FromKnown(Colors.Black, 1f)); for (int index = 0; index < PointCount; ++index) { for (int n = 0; n < NeighborCount; ++n) { renderTarget.DrawLine(_brush1, (NeighborCount - n) / (float)(10 * NeighborCount), _points[index], _points[_neighbors[index, n]]); } renderTarget.DrawEllipse(_brush, 0.5f, new Ellipse(_points[index], 1.5f, 1.5f)); } string text = "Press <Esc> to exit..."; using (TextFormat textFormat = _directWriteFactory.CreateTextFormat("Segoe UI", 13, FontWeight.Normal)) using (TextLayout textLayout = _directWriteFactory.CreateTextLayout(text, textFormat, float.MaxValue, float.MaxValue)) using (SolidColorBrush textBrush = renderTarget.CreateSolidColorBrush(Color.FromKnown(Colors.White, 1))) { renderTarget.DrawText( text, textFormat, new RectF(10, 10, ClientRectangle.Width, ClientRectangle.Height), textBrush, DrawTextOptions.None, MeasuringMode.Natural ); } renderTarget.EndDraw(); _swapChain.Present(1, 0); await MovePoints(); }
private void Render() { DeviceContext renderTarget = _deviceContext; renderTarget.BeginDraw(); renderTarget.Clear(Color.FromKnown(Colors.Black, 1f)); _random = new Random(19292); for (int index = 0; index < _brushes.Length; ++index) { float x = _random.Next(0, ClientRectangle.Width); float y = _random.Next(0, ClientRectangle.Height); Ellipse ellipse = new Ellipse(x, y, 50, 50); renderTarget.FillEllipse(_brushes[index], ellipse); renderTarget.DrawEllipse(_pens[index], 1, ellipse); } string text = "Press <Esc> to exit..."; using (TextFormat textFormat = _directWriteFactory.CreateTextFormat("Segoe UI", 13, FontWeight.Normal)) using (TextLayout textLayout = _directWriteFactory.CreateTextLayout(text, textFormat, float.MaxValue, float.MaxValue)) using (SolidColorBrush textBrush = renderTarget.CreateSolidColorBrush(Color.FromKnown(Colors.White, 1))) { renderTarget.DrawText( text, textFormat, new RectF(10, 10, ClientRectangle.Width, ClientRectangle.Height), textBrush, DrawTextOptions.None, MeasuringMode.Natural ); } renderTarget.EndDraw(); _swapChain.Present(1, 0); }
private void MainWindow_Load(object sender, EventArgs e) { if (_dxgiDevice != null) { CleanUp(); } _dxgiDevice = DxgiDevice.CreateDevice(); _factory = Direct2DFactory.CreateFactory(FactoryType.SingleThreaded, DebugLevel.None); using (Device device = _factory.CreateDevice(_dxgiDevice)) { _deviceContext = device.CreateDeviceContext(DeviceContextOptions.None); using (DxgiAdapter adapter = _dxgiDevice.GetAdapter()) using (DxgiFactory factory = adapter.GetFactory()) { _swapChain = factory.CreateSwapChainForHwnd(_dxgiDevice, Handle); _dxgiDevice.MaximumFrameLatency = 1; _swapChain.GetBuffer(0, out _surface); _bitmap = _deviceContext.CreateBitmapFromDxgiSurface(_surface); _deviceContext.SetTarget(_bitmap); _brush = _deviceContext.CreateSolidColorBrush(Color.FromKnown(Colors.Black, 0.4f)); } } uint value = _deviceContext.MaximumBitmapSize; }