みなさん、こんにちわ。
沖と申します。
こちら、久しぶりの投稿になります。
Delphi 10.2 , 10.3 で、描画に時間がかかると
無限イベントループになって、困っています。
プラットフォームは、Win32 です。
C# で同じ事をやってみましたが、Delphi だけで
起こります。
もし、情報を持ってる方がおられましたら、
ヒントをいただけると助かります。
■以下、Delphi, C# 双方のソース
現象を起こすために、'aaa' というテキストを
100 x 100 回、時間をかけて描画させてます。
{* フォームにPaintBoxを貼っただけのシンプルなアプリ }
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls;
type
TForm2 = class(TForm)
PaintBox1: TPaintBox;
procedure PaintBox1Paint(Sender: TObject);
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.PaintBox1Paint(Sender: TObject);
var
i, j: integer;
begin
for i := 1 to 100 do begin
for j := 1 to 100 do begin
PaintBox1.Canvas.TextOut(i,j, 'aaa');
Sleep(1);
end;
end;
end;
end.
同じように C# でアプリを作成してみましたが、こちらでは
Delphi のような現象は起こりませんでした。
フォームに直接描画しています。
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
for( int i = 0; i < 100; i++)
{
for( int j = 0; j < 100; j++)
{
e.Graphics.DrawString("aaa", Form1.DefaultFont, Brushes.Blue, (float)i, (float)j);
System.Threading.Thread.Sleep(1);
}
}
}
}
}
MLホームページ:
https://www.freeml.com/delphi-users
----------------------------------------------------------------------
【重要】必ずお読みください
■freeml byGMOサービス終了のお知らせ■
2019年12月2日(月)12:00をもちまして、
サービスの提供を終了させていただきます。
詳しくはこちら
http://ck.freeml.com/rd.php?cid=11272
------------------------------------------------------[freeml byGMO]--
あなたの街のチラシがいつでも無料で見放題!
チラシをクリックしてチラシが拡大されたらポイントゲット♪
まずはかんたん登録♪ -ポイントタウン-
https://www.pointtown.com/ptu/rd.cgi?cid=8912
----------------------------------------------------------------------