お酒好きのおしりトラブル対策とは

RECT 構造体は四角形の左上隅と右下隅の座標を定義するものではあると思いますが

多角形の座標を定義する構造体はないのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (1件)

> RECT構造体は四角形の左上隅と右下隅の座標を定義するものではあると思いますが



これは、正しいとも間違いとも言えません。

C標準にはRECT構造体なるものはありません。
あなたの言う「RECT構造体」は何かのライブラリやAPI用に追加されたもので、その定義として「四角形の左上隅と右下隅の座標」としているだけです。
例えば、↓このRECT構造体はWindowsAPI用に用意されたものです。
MacやLinuxのCではそのままでは使えません。
Windowsでも、#includeで適切なヘッダを読み込まなければ使えません。
http://msdn.microsoft.com/ja-jp/library/a5ch4fda …

他のライブラリで別の定義をしても構いません。
対応した関数等をちゃんと用意できれば、「四角形の右上隅と左下隅の座標」とか「四角形の左上隅座標と大きさ」とかで「RECT構造体」を作っても構わないわけです。


> 多角形の座標を定義する構造体はないのでしょうか?

これも同様に、C言語にはありません。
そのRECTが定義されているライブラリのマニュアル等を調べて、無いのなら「そのライブラリには」存在しないのでしょう。

無いのなら、適当に作ればいいのです。
どう定義するか、は、それをどう使いたいかを考え、都合のいいものにすればいいです。

例えば、上記のMFCを使って、Windowsの画面に多角形を書きたい、といった場合は、CDC::Polygon で簡単に使えるものがよいと考えられます。
http://msdn.microsoft.com/ja-jp/library/hhkhd4xz …
そうすると、引数にあった型で POINT構造体の配列と、点の数を記憶できるようなものがよいでしょう。

この回答への補足

<<このRECT構造体はWindowsAPI用に用意されたものです。
MacやLinuxのCではそのままでは使えません。
Windowsでも、#includeで適切なヘッダを読み込まなければ使えません。

ということはwin32APIにあるかどうかを調べればいいのですね
どうやれば調べられますか?

<<例えば、上記のMFCを使って、Windowsの画面に多角形を書きたい、といった場合は、CDC::Polygon で簡単に使えるものがよいと考えられます。

いえ、書きたいわけでなく判定に使いたいのです。

四角形の内部にかかれた画像をマウスを 左上、右上、左下、右下にマウスを乗せたらスクロールするプログラムを作りたいのですが、左上、右上、左下、右下をそれぞれ2つに分ければRECT構造体で定義させて判定させればうまくいくと思いますが、多角形の判定にして処理を短くできないかな?っと思いまして質問させていただきました。

下のような図で ┌ の部分にマウスを持っていけば左上に移動するプログラムですね

┌ - ┐ 

|  |

└ - ┘

補足日時:2013/03/16 18:36
    • good
    • 0
この回答へのお礼

調べ方がわからなかったので自作のを作ってみたのですが、構造体を作ったところで判定処理させるのがどうすればいいか悩んでいたのですが

解決法を思いつきました。

┏の場合 四角形を4っつつくって斜めの部分を上と左の重複判定させれば斜めに移動させれると思いました。

ただ、判定箇所は

□□■■■□□
□   □
■   ■
■   ■
■   ■
□   □
□□■■■□□

ではなく

□■■■■■□
■   ■
■   ■
■   ■
■   ■
■   ■
□■■■■■□

になりそうですが

お礼日時:2013/03/17 19:10

このQ&Aに関連する人気のQ&A

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


人気Q&Aランキング