四角形を並べて表示するのに隣の線が重ならないようにするには?

解決


ちこ  2007-03-01 00:24:41  No: 25119

はじめまして。

Rectangleで悩んでおります。

1つの四角形の大きさを20*20として

縦11個、横2列の合計22個の四角を並べたいのですが、
隣同士の四角形の辺が重なってしまいます。
これを解消するにはどうしたらよろしいでしょうか?

最初はMoveTo LineToで縦横の線を書き、FillRectで色を
塗ろうかと考えましたが、線を引いた後で色を塗ると
線が消えたりして、結局Rectangleの方がいいのかと思い
こちらにトライしております。

どなたかわかる方がいらっしゃいましたら教えていただけたらと思います。


イミフメ  2007-03-01 02:15:14  No: 25120

このように隣り合う四角形の間を十分離して描けばいいと思うけど、
そういう問題じゃないの?

□□
□□
□□
□□


beagle  2007-03-01 03:51:31  No: 25121

本当に意味不明ですね。

質問者は「並べたい」及び「隣同士の四角形の辺が重なって」について
第三者にも判るような記述をしてはどうか?
それと「合計22個」の四角よりも、2個の四角でいいから、最小限の
ソースコードを提示してはどうか?
有効な助言が返せるかもしれない。

以下、テレパシーを使ってみる。
コードその1.
   Image1.Canvas.Rectangle(00,00,20,20);
   Image1.Canvas.Rectangle(00,19,20,39);
その2.
   Image1.Canvas.Rectangle(00,100,20,120);
   Image1.Canvas.Rectangle(00,120,20,140);
その3.
   Image1.Canvas.Rectangle(00,200,20,220);
   Image1.Canvas.Rectangle(00,221,20,241);
#現在の質問者のコードはその2.の状態である。
#これをその1.またはその3.にしたい。
・・・外したかな?
ちなみにこちらの環境では
その1→線が同じ太さ
┌──┐
├──┤
└──┘
その2→隣接部が太い
┌──┐
┣━━┫
└──┘
その3→イミフメさんが提示したとおり


ちこ  2007-03-01 04:32:57  No: 25122

イミフメ様、beagle様

早速のお返事ありがとうございます。

質問を明確に説明せず、申し訳ありませんでした。

 for X := 0 to 2 do
  for Y:= 10 downto 0 do
   begin
    Image1.Canvas.Brush.Color:= StringToColor(Q_Color.Fields[0].asString);
    Image1.Canvas.Rectangle((X*20)+30,(Y*20)+20,(X*20)+50,((Y+1)*20)+20);
    end;

上記のように現在は記述しています。

beagle様の例だと、希望はその1なんですが、隣接部を考えて1引かなくちゃ
いけないということなのでしょうか?


頭の整理整頓  2007-03-01 05:29:02  No: 25123

const
  BASEX = 30;        // 基点
  BASEY = 20;        // 基点
  RSIZE = 20-1;      // 辺長  ※一辺 20
  GAP   = -1;        // 間隔  ※希望の「その1」
  POSIT = RSIZE+GAP;

begin
 .....
 for X := 0 to 1 do
  for Y:= 10 downto 0 do
    begin
      Image1.Canvas.Brush.Color:= StringToColor(Q_Color.Fields[0].asString);
      Rectangle((X*POSIT)+BASEX, (Y*POSIT)+BASEY, (X*POSIT)+RSIZE+BASEX, (Y*POSIT)+RSIZE+BASEY);
    end;


ちこ  2007-03-01 06:00:23  No: 25124

頭の整理整頓  様

ありがとうございます。
早速教えていただいたようにソースを書き換えたところ、辺が重ならずに
綺麗に表示できるようになりました!

本当に助かりました!
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加