掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
imageコンポーネントで画像を変化させる際のちらつきを無くすには? (ID:483)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
またまた便乗ですが、(^^ゞ 同様にチラツキに困っています。 フォーム全体にImage1を置いて、それに背景画像を読み込み、 別に作成した Bitmap1 にも同じ大きさの背景画像を入れておきます。 そして、ImageList1 に小さなコマ画像を入れます。 以下のようなサンプルコードで、マウスのドラッグによりコマ画像を動かすと、 Delphi2.0 でコンパイルして実行した場合は、全く画面のチラツキがありません。 でも、Delphi6 でコンパイルして実行すると背景がひどくチラツキます。 TImage コンポーネントの仕様が変更されたとしか思えないのですが、 Delphi6 でチラツキをなくす方法はないでしょうか。 ------------------------------------------------ const KOMA_WW = 40; // コマ画像の幅 KOMA_HH = 48; // コマ画像高さ var ShowX, ShowY : Integer; // コマ表示位置 preMX, preMY : Integer; DefX, DefY : Integer; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin DefX := X - ShowX; //マウスX座標とコマ左上X座標との差分 DefY := Y - ShowY; //マウスY座標とコマ左上Y座標との差分 preMX := X; preMY := Y; end; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: shiftState; X,Y: Integer); begin Restore_BackGround(preMX, preMY); // 前の位置のコマを消す ImageList1.Draw(Image1.Canvas, X - DefX, Y - DefY, 0); // コマを描く preMX := X; preMY := Y; end; // Bitmap1の背景(一部分)をImage1にコピー procedure TForm1.Restore_BackGround(mx, my : Integer); var px, py : Integer; srcRect, dstRect : TRect; begin px := mx - DefX; // コマ左上のX座標 py := my - DefY; // コマ左上のY座標 srcRect := Rect(px, py, px + KOMA_WW, py + KOMA_HH); dstRect := Rect(px, py, px + KOMA_WW, py + KOMA_HH); Image1.Canvas.CopyRect(dstRect, Bitmap1.Canvas, srcRect); end; procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ShowX := X - DefX; ShowY := Y - DefY; end; ----------------------------------------------------
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.