はじめまして。
Rectangleで悩んでおります。
1つの四角形の大きさを20*20として
縦11個、横2列の合計22個の四角を並べたいのですが、
隣同士の四角形の辺が重なってしまいます。
これを解消するにはどうしたらよろしいでしょうか?
最初はMoveTo LineToで縦横の線を書き、FillRectで色を
塗ろうかと考えましたが、線を引いた後で色を塗ると
線が消えたりして、結局Rectangleの方がいいのかと思い
こちらにトライしております。
どなたかわかる方がいらっしゃいましたら教えていただけたらと思います。
このように隣り合う四角形の間を十分離して描けばいいと思うけど、
そういう問題じゃないの?
□□
□□
□□
□□
本当に意味不明ですね。
質問者は「並べたい」及び「隣同士の四角形の辺が重なって」について
第三者にも判るような記述をしてはどうか?
それと「合計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→イミフメさんが提示したとおり
イミフメ様、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引かなくちゃ
いけないということなのでしょうか?
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;
頭の整理整頓 様
ありがとうございます。
早速教えていただいたようにソースを書き換えたところ、辺が重ならずに
綺麗に表示できるようになりました!
本当に助かりました!
ありがとうございました。
ツイート | ![]() |