掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ShapeのpsDotで、点線が動いているように見えるようにするには? (ID:38703)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Shapeでは実現が難しいので、Imageなどを置いて自分で描画するのはどうでしょう。 Rectangleの変わりにLineToで長方形の四辺を描画するようにし、 開始点を少しずつずらしていけば原理的には点線が動いているように見えます。 procedure TForm1.FormCreate(Sender: TObject); begin // ずらす量を管理する変数を用意 FOffset := 0; end; procedure TForm1.Timer1Timer(Sender: TObject); var rc: TRect; begin FOffset := (FOffset + 1) mod 6; // pdDotの場合、繰り返し周期は3+3=6みたい rc := Image1.ClientRect; Dec(rc.Right); // Rectangleは矩形の右と下の端を含まないので、それに合わせて調整 Dec(rc.Bottom); with Image1.Canvas do begin Pen.Style := psDot; MoveTo(rc.Left + FOffset, rc.Top); // offset分ずれた位置から点線を引き始める LineTo(rc.Right, rc.Top); // 上 LineTo(rc.Right, rc.Bottom); // 右 LineTo(rc.Left, rc.Bottom); // 下 LineTo(rc.Left, rc.Top); // 左 LineTo(rc.Left + FOffset, rc.Top); // 最後に開始点とつなぐ end; end; 中も塗りつぶしたい場合は、線を引く前にFillRectしてください。 さて、実際にやってみるとわかりますが、これだけだと辺の長さの合計が6の倍数でない場合、始点が0に戻る時に左上隅が不自然に動きます。 気になるようだったら、始点が長方形をぐるりと一周するように改良してみてください。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.