OnKeyDown: procedure(k: Key);
+OnDrawFrame: procedure(dt: real);
+ . dt OnDrawFrame |
+OnKeyDown: procedure(k: Key);
|
OnKeyPress: procedure(ch: char);
|
diff --git a/Release/pabcversion.txt b/Release/pabcversion.txt
index a1d4ae954..5b1368f98 100644
--- a/Release/pabcversion.txt
+++ b/Release/pabcversion.txt
@@ -1 +1 @@
-3.5.1.2247
+3.5.1.2250
diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh
index 081e565a0..e12430da5 100644
--- a/ReleaseGenerators/PascalABCNET_version.nsh
+++ b/ReleaseGenerators/PascalABCNET_version.nsh
@@ -1 +1 @@
-!define VERSION '3.5.1.2247'
+!define VERSION '3.5.1.2250'
diff --git a/TestSuite/CompilationSamples/GraphWPF.pas b/TestSuite/CompilationSamples/GraphWPF.pas
index ac07c8638..c3d7ca2a0 100644
--- a/TestSuite/CompilationSamples/GraphWPF.pas
+++ b/TestSuite/CompilationSamples/GraphWPF.pas
@@ -483,9 +483,6 @@ var OnKeyUp: procedure(k: Key);
var OnKeyPress: procedure(ch: char);
/// Событие изменения размера графического окна
var OnResize: procedure;
-/// Событие перерисовки графического окна.
-///Инициализируется процедурой с вещественным параметром dt - временем, прошедшим с момента последнего обновления экрана
-var OnDrawFrame: procedure(dt: real) := nil;
//{{{--doc: Конец секции 3 }}}
@@ -1569,6 +1566,7 @@ procedure SystemOnResize(sender: Object; e: SizeChangedEventArgs) :=
var OnDraw: procedure := nil;
var OnDraw1: procedure(frame: integer) := nil;
+var OnDrawT: procedure(dt: real) := nil;
var FrameRate := 61; // кадров в секунду. Можно меньше!
var LastUpdatedTime := new System.TimeSpan(integer.MinValue);
@@ -1577,12 +1575,12 @@ var FrameNum := 0;
procedure RenderFrame(o: Object; e: System.EventArgs);
begin
- if (OnDraw<>nil) or (OnDraw1<>nil) or (OnDrawFrame<>nil) then
+ if (OnDraw<>nil) or (OnDraw1<>nil) or (OnDrawT<>nil) then
begin
var e1 := RenderingEventArgs(e).RenderingTime;
var dt := e1 - LastUpdatedTime;
var delta := 1000/Framerate; // через какое время обновлять
- if OnDrawFrame<>nil then
+ if OnDrawT<>nil then
delta := 0; // перерисовывать когда придёт время
if dt.TotalMilliseconds < delta then
exit
@@ -1593,8 +1591,8 @@ begin
OnDraw()
else if OnDraw1<>nil then
OnDraw1(FrameNum)
- else if OnDrawFrame<>nil then
- OnDrawFrame(dt.Milliseconds/1000);
+ else if OnDrawT<>nil then
+ OnDrawT(dt.Milliseconds/1000);
end;
end;
@@ -1616,7 +1614,7 @@ end;
procedure BeginFrameBasedAnimationTime(Draw: procedure(dt: real));
begin
- OnDrawFrame := Draw;
+ OnDrawT := Draw;
end;
procedure EndFrameBasedAnimation;
diff --git a/TestSuite/CompilationSamples/WPFObjects.pas b/TestSuite/CompilationSamples/WPFObjects.pas
index a58280873..254a15f26 100644
--- a/TestSuite/CompilationSamples/WPFObjects.pas
+++ b/TestSuite/CompilationSamples/WPFObjects.pas
@@ -1184,6 +1184,8 @@ var
OnKeyPress: procedure(ch: char);
/// Событие изменения размера графического окна
OnResize: procedure;
+ /// Событие перерисовки графического окна. Параметр dt обозначает количество миллисекунд с момента последнего вызова OnDrawFrame
+ OnDrawFrame: procedure(dt: real) := nil;
// -----------------------------------------------------
//>> Функции пересечения# Intersection functions
@@ -1207,15 +1209,16 @@ procedure __InitModule__;
procedure __FinalizeModule__;
//{{{--doc: Конец секции 2 }}}
-procedure BeginFrameBasedAnimation(Draw: procedure; frate: integer := 61);
+//procedure BeginFrameBasedAnimation(Draw: procedure; frate: integer := 61);
+
+//procedure BeginFrameBasedAnimationTime(DrawT: procedure(dt: real));
-procedure BeginFrameBasedAnimationTime(DrawT: procedure(dt: real));
implementation
-procedure BeginFrameBasedAnimation(Draw: procedure; frate: integer) := GraphWPF.BeginFrameBasedAnimation(Draw,frate);
+//procedure BeginFrameBasedAnimation(Draw: procedure; frate: integer) := GraphWPF.BeginFrameBasedAnimation(Draw,frate);
-procedure BeginFrameBasedAnimationTime(DrawT: procedure(dt: real)) := GraphWPF.BeginFrameBasedAnimationTime(DrawT);
+//procedure BeginFrameBasedAnimationTime(DrawT: procedure(dt: real)) := GraphWPF.BeginFrameBasedAnimationTime(DrawT);
function RGB(r,g,b: byte) := Color.Fromrgb(r, g, b);
function ARGB(a,r,g,b: byte) := Color.FromArgb(a, r, g, b);
@@ -1540,6 +1543,19 @@ procedure SystemOnResize(sender: Object; e: SizeChangedEventArgs) :=
if OnResize<>nil then
OnResize();
+var LastUpdatedTimeWPF := new System.TimeSpan(integer.MinValue);
+
+procedure RenderFrameWPF(o: Object; e: System.EventArgs);
+begin
+ if OnDrawFrame<>nil then
+ begin
+ var e1 := RenderingEventArgs(e).RenderingTime;
+ var dt := e1 - LastUpdatedTimeWPF;
+ LastUpdatedTimeWPF := e1;
+ OnDrawFrame(dt.Milliseconds/1000);
+ end;
+end;
+
procedure __InitModule;
begin
AdditionalInit := procedure ->
@@ -1554,6 +1570,8 @@ begin
MainWindow.TextInput += SystemOnKeyPress;
MainWindow.SizeChanged += SystemOnResize;
+ CompositionTarget.Rendering += RenderFrameWPF;
+
Objects := new ObjectsType;
Window := GraphWPF.Window;
GraphWindow := GraphWPF.GraphWindow;
diff --git a/VisualPascalABCNET/Workbench/UpdateService.cs b/VisualPascalABCNET/Workbench/UpdateService.cs
index 1368e9b13..a06cd640b 100644
--- a/VisualPascalABCNET/Workbench/UpdateService.cs
+++ b/VisualPascalABCNET/Workbench/UpdateService.cs
@@ -27,7 +27,7 @@ namespace VisualPascalABC
{
using (var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"))
{
- return key != null && (key.GetValue("Version") as string).StartsWith("4.7");
+ return key != null && ((key.GetValue("Version") as string).StartsWith("4.7") || (key.GetValue("Version") as string).StartsWith("4.8"));
}
}
catch (Exception ex)
diff --git a/bin/PascalABCNET.chm b/bin/PascalABCNET.chm
index b68d2b322..fa00d9ff8 100644
Binary files a/bin/PascalABCNET.chm and b/bin/PascalABCNET.chm differ
|