1
0

Batches Brew.

This commit is contained in:
MarcEricMartel 2023-11-12 17:53:15 -05:00
parent 6e87eed85b
commit 075a6b94e1
2 changed files with 25 additions and 6 deletions

View File

@ -5,6 +5,9 @@ using Microsoft.AspNetCore.Components;
using Microsoft.JSInterop; using Microsoft.JSInterop;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using Newtonsoft.Json; using Newtonsoft.Json;
using System.Drawing;
using System.Threading;
using Microsoft.AspNetCore.Mvc.ApplicationModels;
namespace BlazorCanvas.Data; namespace BlazorCanvas.Data;
@ -25,7 +28,26 @@ public class CanvasService {
// TODO: Dessiner à partir des commandes de Franz. // TODO: Dessiner à partir des commandes de Franz.
public async void OnMouseMove(MouseEventArgs eventArgs) { public async void Draw(IEnumerable<CanvasCommand> lscommand)
{
if (_currentCanvasContext is null)
_currentCanvasContext = await myCanvas.CreateCanvas2DAsync();
await _currentCanvasContext.BeginBatchAsync();
foreach (CanvasCommand command in lscommand) {
await _currentCanvasContext.SetFillStyleAsync(command.Color);
await _currentCanvasContext.FillRectAsync(command.X, command.Y, command.PointSize, command.PointSize);
}
await _currentCanvasContext.EndBatchAsync();
}
public async void Draw(CanvasCommand command) {
if (_currentCanvasContext is null)
_currentCanvasContext = await myCanvas.CreateCanvas2DAsync();
await _currentCanvasContext.SetFillStyleAsync(command.Color);
await _currentCanvasContext.FillRectAsync(command.X, command.Y, command.PointSize, command.PointSize);
}
public async void HandleMouse(MouseEventArgs eventArgs) {
double mouseX = 0, mouseY = 0; double mouseX = 0, mouseY = 0;
if (eventArgs.Buttons == 0 || eventArgs.Buttons > 2) if (eventArgs.Buttons == 0 || eventArgs.Buttons > 2)
@ -42,8 +64,6 @@ public class CanvasService {
mouseX = eventArgs.PageX - offsets.Value<double>("offsetLeft"); mouseX = eventArgs.PageX - offsets.Value<double>("offsetLeft");
mouseY = eventArgs.PageY - offsets.Value<double>("offsetTop"); mouseY = eventArgs.PageY - offsets.Value<double>("offsetTop");
} }
if (_currentCanvasContext is null)
_currentCanvasContext = await myCanvas.CreateCanvas2DAsync();
if (eventArgs.Buttons == 1) // Couleur si bouton gauche, blanc si bouton droit if (eventArgs.Buttons == 1) // Couleur si bouton gauche, blanc si bouton droit
color = currentColor; color = currentColor;
@ -63,8 +83,7 @@ public class CanvasService {
// TODO: Shipper les commandes à Franz. // TODO: Shipper les commandes à Franz.
await _currentCanvasContext.SetFillStyleAsync(color); Draw(command);
await _currentCanvasContext.FillRectAsync(mouseX, mouseY, pointSize, pointSize);
_lastCommand = command; _lastCommand = command;
} }

View File

@ -38,7 +38,7 @@
<label>Magnétisme: </label> <label>Magnétisme: </label>
<input type="checkbox" @bind="@canvasService.snap"/> <input type="checkbox" @bind="@canvasService.snap"/>
</header> </header>
<div @ref="canvasService.divCanvas" @onmousedown="canvasService.OnMouseMove" @onmousemove="canvasService.OnMouseMove" style="border:1px dotted #000000;"> <div @ref="canvasService.divCanvas" @onmousedown="canvasService.HandleMouse" @onmousemove="canvasService.HandleMouse" style="border:1px dotted #000000;">
<BECanvas @ref="canvasService.myCanvas" Height="1080" Width="1920"></BECanvas> <BECanvas @ref="canvasService.myCanvas" Height="1080" Width="1920"></BECanvas>
</div> </div>
<footer> <footer>