dポイントプレゼントキャンペーン実施中!

RectangleやLineTo関数を使ってて気づいたのですが
線の終点が指定した座標の一歩手前になっているようです
気になってネットで検索したら、終点の座標を指定すると説明しているものがありました。
私の使っている本でもそうなっています。
これはPCの問題なのでしょうか?
それとも正確には終点の一歩手前の座標を指定するものなのでしょうか?
後者だとするとなぜそうしてあるのか気になります。
試しに同じ座標から同じ座標に線を引こうとしたら何も表示されませんでした。
私の感覚では点が表示されるのが期待されるのですが・・・

A 回答 (3件)

LineTo 等で描画する場合、座標の指定には終点の座標を指定するのですが、終点の座標自体は描画に含まれません。



http://msdn.microsoft.com/ja-jp/library/cc410428 …

PCの問題ではなく仕様となっていますので、どの環境でも同じ結果になります。

なぜこういった仕様にしたのかの理由は分かりませんが、座標ではなく幅として考えるとスッキリするかと思います。

MoveToEx(hdc, x, y, NULL);
x += 10;
LineTo(hdc, x, y);

とした場合、きちんと10ドットの線が引かれます。

これが、もし終点の座標も描画に含まれてしまうような仕様だったら、ロジック上では10ドット描画しているように見えるのに、実際には11ドットの線が引かれてしまうことになってしまい混乱してしまうかもしれません。
    • good
    • 0

少なくとも Windows3.1 の時代から, 座標はピクセルそのものではなく「ピクセルの境界」についています. 方眼紙を想像して

もらえればいいかな.
    • good
    • 0
この回答へのお礼

遅くなりました。回答ありがとうございます。
ピクセル上だと思っていました。

お礼日時:2011/10/04 01:52

例えば、


点A:(0,0) - 点B:(10, 0)
点B:(10,0) - 点C:(20, 10)
と、2つの直線を連続で描画した場合に、始点、終点共に描画するルールだと、

「点Bを2回書いてしまうこと」

が、R2_XORPEN 等で描画した場合にまずいからではないでしょうか?
    • good
    • 0
この回答へのお礼

遅くなりました。回答ありがとうございます。

お礼日時:2011/10/04 01:52

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