🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: japan.comp.lang.delphi
Article #9

Re: 画面モード切替後のグラフィックパフォーマンスの低下

#9
From: K.Takaoka
Date: Sun, 26 Dec 1999 00:00
48 lines
2835 bytes
える@海豚ぞな

林 知紀 wrote:
> ただTForm.CanvasとTPainBox.Canvasに共通する欠点として
> フォームが他のアプリケーションのウインドウに隠されたときなどの
> フォームの自動描画が行われないことがあります。

もしかして、根本的に「Windows の描画アルゴリズム」を誤解されていま
せんか ?

Windows では (C/C++/VB/Delphi/なんでも) アタリマエのことなのですが、

Form1.Canvas や PaintBox1.Canvas に、OnPaint 以外の場所で描画を行う
ことは無意味に近いです。

Windows の描画ははしょって書くと

1. Form, ボタン などが画面に現れる。
  (隠れていたのが見えるようになるとか、新規に出現するとか)

2. 現れた部品(Form. ボタン)は全て「無効な内容」であるとされる

3. Windows は「無効な内容」を発見すると「描画してくれ」と通達する

4. 通達を受けると、部品(Form, ボタン) の Paint が呼ばれて描画される
  (ここで OnPaint が発生します)

5. 無効な部分は描画されて「有効」になる。

という感じです、部分的にほかのウィンドウで隠れたりすると、そこは
「無効」になり、再び見えるようになると、「有効」にするために「描画」
を行う必要があります。

同様に無効にならないと Windows は描画をしようとしないので、

Form1 や PaintBox1 で

  PaintBox1.Canvas.Draw(0, 0, bitmap);

のようなことをしている状態で、bitmap に変更を加えても何も画面上に
は変化が現れないことになります。

  PaintBox1.Invalidate;

と、PaintBox1 を「無効」な状態にすると、Windows はもし PaintBox1 が
画面上に見えていたら、そこを有効にするために、PaintBox1.Paint を呼び
だして、PaintBox1.OnPaint で再び bitmap を書くことで画面上の状態が
変化する、という具合です。
Technical Details
Message-ID: <38661455.CECA03D4@din.or.jp>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <83ou3d$jvv$1@nw041.infoweb.ne.jp> <3860CAFB.E16988D7@po.teleway.ne.jp> <83u3iq$i92$1@nw041.infoweb.ne.jp> <842u63$fpk@www.net0726.or.jp> <8451vt$ojp$1@nw042.infoweb.ne.jp>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 110a07,f2bd283c630b1b34
X-Google-Attributes: gid110a07,public
X-Google-Thread: feb2e,f2bd283c630b1b34
X-Google-Attributes: gidfeb2e,public
X-Google-Thread: fecfa,f2bd283c630b1b34
X-Google-Attributes: gidfecfa,public
From: "K.Takaoka" <saepro@din.or.jp>
Subject: Re: 画面モード切替後のグラフィックパフォーマンスの低下
Date: 1999/12/26
Message-ID: <38661455.CECA03D4@din.or.jp>
X-Deja-AN: 565003039
Content-Transfer-Encoding: 7bit
References: <83ou3d$jvv$1@nw041.infoweb.ne.jp> <3860CAFB.E16988D7@po.teleway.ne.jp> <83u3iq$i92$1@nw041.infoweb.ne.jp> <842u63$fpk@www.net0726.or.jp> <8451vt$ojp$1@nw042.infoweb.ne.jp>
X-Accept-Language: ja,en
Content-Type: text/plain; charset=iso-2022-jp
Organization: DOLPHIN INTERNET, Tokyo, Japan.
Mime-Version: 1.0
Newsgroups: japan.comp.lang.delphi,fj.comp.lang.pascal,fj.os.ms-windows.programming