アプリ版:「スタンプのみでお礼する」機能のリリースについて

delphi6です
imageに描画する時、ちらつきがでます。
doublebufferdを設定すると良いみたいなんですが、コードの記述のしかたがわかりません。
どなたかお救いを・・・

A 回答 (2件)

こんにちは。



失礼しました。TImage は TWinControl から派生したクラスではないので DoubleBuffered プロパティは使えませんね。

なるほど、やりたいことはよくわかりました。というか、私も同じようなことをやっています。

私は C++Builder を使用していますが、概念は一緒です。
まず、TScrollBox を配置し、その中に TImage と TPaintBox を配置します。TImage には画像を読み込んで表示し、その上に重なるように置いた TPaintBox で作図機能を実装します。マウスによる作図機能は、 TPaintBox の OnMouseDown, OnMouseMove 等のイベントで処理します。
で、実際に DoubleBuffered を設定するのは、TScrollBox のほうです。やりかたは、先の回答と同じで、ScrollBox1.DoubleBuffered := true です。

situmonnsya さんの Image2 に該当するのが TPaintBox となりますが、TPaintBox での描画内容は便宜 Bitmap や Jpeg 等に出力できるので、この方法で問題ないでしょう。あと、注意事項としては、TPaintBox の中身を FillRect 等で塗りつぶさないことです。確実にチラつきます(経験則です)。
    • good
    • 0
この回答へのお礼

良回答でした。
お答えを参考にいろいろやってみました。
PaintBoxを使用する限りDoubleBufferedの設定はしなくてもちらつきはでないみたいです。
ありがとうございました。

お礼日時:2006/02/21 23:20

こんにちは。



どのような描画をしようとしているのか、ちょっと気になりますが……。

単に DoubleBuffered を設定したいだけであれば、オブジェクト(コンポーネント)の DoubleBuffered プロパティに TRUE をセットするだけです。

FormCreate の中などで、
Image1.DoubleBuffered := true
(だったと思います。↑の Pascal 文法が間違ってなければ…)
とすれば良いと思います。

この回答への補足

ふたつのimage1とimage2が重なって配置されてます。
下のimage1に絵があって、上のimage2はTransparentをTrueにして透かしています。
image2にマウスが移動した分、線が描かれます。
CADのラバーライン(?)みたいな感じです。

imageのオブジェクトインスペクタにはDoubleBuffered プロパティはないんです。
でも、コードで記述して設定できるみたいなんです。(質問番号QNo.144887の回答より)
>Image1.DoubleBuffered := true
としても
[エラー] Unit1.pas(73): 未定義の識別子 : 'DoubleBuffered'
となります。
Image1.Canvas.DoubleBuffered := true
としてもダメでした。

補足日時:2006/02/21 17:48
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!