ページ 1 / 1
スピードメーターの円について
Posted: 2013年9月28日(土) 11:57
by 草創
http://dixq.net/sm/d6.html
でメーターの書き方がありました。
そこでこの内側に円を描きたいのですがどうすればいいのでしょうか。
完全な円を書くことはできるのですがメモリがある部分だけに円を描きたいです。
画像は使いたくありません。

Re: スピードメーターの円について
Posted: 2013年9月28日(土) 13:15
by Priest
SetDrawArea関数でメモリがある部分だけを描画範囲に指定するか
赤い直線を描く時に座標を求めていると思いますので,内側の座標を繋いで円を作るとかでしょうか.
Re: スピードメーターの円について
Posted: 2013年9月28日(土) 14:01
by 草創
これでどうやって書けばいいのでしょうか。
なるべく滑らかな円にしたいです。
Re: スピードメーターの円について
Posted: 2013年9月28日(土) 14:29
by softya(ソフト屋)
円を描画するときだけSetDrawAreaで描画範囲を絞って3回に分けて描画すればよいでしょう。
こんな風に分けます。 ※ 適当に描いたので都合の良い様に範囲を指定して下さい。

- img5246457829f6b.png (7.71 KiB) 閲覧数: 6423 回
Re: スピードメーターの円について
Posted: 2013年9月28日(土) 14:50
by usao
完全な円を描いたあとで,不要な部分を背景色で上書きするのではダメですか?
いらない部分を矩形で塗りつぶしとか.
線の切れ目を赤線と同じ角度の斜めにしたいなら三角形で.
Re: スピードメーターの円について
Posted: 2013年9月29日(日) 01:29
by 草創
このメーターが回転した場合はどうすればいいでしょうか。
空いているところが移動するので難しいです。
Re: スピードメーターの円について
Posted: 2013年9月29日(日) 10:40
by softya(ソフト屋)
メーター全体が回転するんですか? とすると数字も回転するんでしょうか?
それは、ユーザーインターフェイスとして使いづらいような。
違う場合、想定している使い方を詳しく説明してもらわないとこちらも的確な回答が難しいです。
Re: スピードメーターの円について
Posted: 2013年9月30日(月) 09:52
by 草創
数字の表示は回転しないのですがメーターは回転します。
視力検査みたいに色々なところに切れ目ができます。
Re: スピードメーターの円について
Posted: 2013年9月30日(月) 10:08
by usao
とりあえず回転しない場合は描けてるのでしょうか?
できてるのであれば,あとはその描画の際に用いた座標を
回転量に合わせて変化させるだけの話でしょう.
三角関数がわかるなら回転させる方法は訊くまでも無い事柄だと思いますし,
「sin? cos? なにそれ美味しいの?」という状態なのであれば説明するのは難しいし…
[追記]
…っていうか,その元ネタのリンク先で三角関数つかってるハズだよな…
ということで念のため確認したら使ってたので,少なくともメータの赤線を書いている方法は理解されているのであれば
赤線群を回転させるのは簡単な話ですよね?
で,今回やりたいことが 赤線ごと回るのか,円弧だけ回るのか わかりませんが,
どちらにしろ考え方(というかやること)は同じではありませんか?
Re: スピードメーターの円について
Posted: 2013年9月30日(月) 11:25
by softya(ソフト屋)
Priestさんの言うとおり、自前で円を描けば何とでもなります。
直線を1度単位とかにすれば綺麗な円になるのでは?
Re: スピードメーターの円について
Posted: 2013年9月30日(月) 12:14
by 草創
返信ありがとうございます。
SetDrawAreaは座標の指定が2箇所だけなので三角関数を使うとこの2つの座標を軸にして回転しているようになってしまいます。
これはどうすればいいでしょうか。
Re: スピードメーターの円について
Posted: 2013年9月30日(月) 14:42
by softya(ソフト屋)
よく意味がわかりませんので、ソースコードを提示してもらえますか。
Re: スピードメーターの円について
Posted: 2013年9月30日(月) 15:28
by usao
上に同じく,現状態がどうなってるのか読み取れないのですが,
そもそもSetDrawArea()というやつは 傾いた矩形領域を設定できるものではないと思うので
自前で回転した状態を作図するのには向いてなさそうに思います.(できなくはないでしょうが,その領域の計算がつらそう)
(前処理として無回転の絵を描いて用意しておき,その絵を毎度回転して描画するという話ならわかりますが.)
Re: スピードメーターの円について
Posted: 2013年9月30日(月) 15:31
by softya(ソフト屋)
makeScreenした専用スクリーンにメーターを描いて、それを更に回転させてメイン画面に描画させる事はできます。
ただ、やはりやりたい事が分からないので、この回答で正しいかは分かりません。