public virtual async void SimulateTask() { PlotForm.SetProgressBar(pictBoxSize.Width); PlotForm.SetEnabled(false); InitTaskHandles(); await Task.Run(() => { doTaskWork(); }); PlotForm.SetEnabled(true); PlotForm.EndGenerate(); }
public async void CreateGif(PointD current, string numGif, string fName) { m_StartX = (float)current.X; m_StartY = (float)current.Y; gifFilename = fractalPlotter.Title + fName + numGif; Int32.TryParse(numGif, out nGif); gifFilename = string.Concat(gifFilename.Split(Path.GetInvalidFileNameChars())); gifFilename = gifFilename.Replace("^", ""); gifFilename = gifFilename.Replace("/", ""); currXmin = xMin; currXmax = xMax; currYmin = yMin; currYmax = yMax; fractalPlotter.CreateGif = true; gifCreater.images.Clear(); //zoom in to the largest square around current x,y if (Math.Abs(m_StartY) < 0.05) { m_StartY = 0; } if (Math.Abs(m_StartX) < 0.05) { m_StartX = 0; } double minX = Math.Min(Math.Abs((float)xMax - m_StartX), Math.Abs((float)xMin - m_StartX)); double minY = Math.Min(Math.Abs((float)yMax - m_StartY), Math.Abs((float)yMin - m_StartY)); double delta = Math.Min(minX, minY); xMin = (decimal)(m_StartX - delta); xMax = (decimal)(m_StartX + delta); yMin = (decimal)(m_StartY - delta); yMax = (decimal)(m_StartY + delta); centerX = xMin + (xMax - xMin) / 2; centerY = yMin + (yMax - yMin) / 2; dx = (xMax - xMin) / (2 * nGif); dy = (yMax - yMin) / (2 * nGif); xMax -= dx * (nGif - 1); xMin += dx * (nGif - 1); yMax -= dy * (nGif - 1); yMin += dy * (nGif - 1); plotForm.Params2Form(); PlotForm.SetProgressBar(pictBoxSize.Width); PlotForm.SetEnabled(false); InitTaskHandlesGif(); await Task.Run(() => { DoGif(); }); FractalCompletedGIF(); }
private void CalcSimPar() { doFillXvalues = false; decimal t = CurrentFunction.Parameter; decimal start = t; if (t > CurrentFunction.DiagramStop) { start = CurrentFunction.DiagramStop; } int m = MaxFunctionIterations; gifCreater.images.Clear(); decimal range2Fill = Math.Abs(CurrentFunction.DiagramStop - t); int numSteps = 50; decimal delta = range2Fill / numSteps; int max = (int)(Math.Abs(CurrentFunction.DiagramStop - t) * 100); PlotForm.SetProgressBar(numSteps + 1); try { for (decimal i = 0; i < numSteps; i++) { report.PercentageComplete = (int)i; if (progressHandler is IProgress <ProgressReportModel> progress) { progress.Report(report); } if (token.IsCancellationRequested) { break; } CurrentFunction.Parameter = start + i * delta; PlotFunction(); if (CreateGIF) { gifCreater.images.Add(functionDrawer.Copy4GIF); } Thread.Sleep(5); } } catch { } gifCreater.Create(1, FunctionGifFileName); CurrentFunction.Parameter = t; PlotFunction(); MaxFunctionIterations = m; doFillXvalues = true; }