スピードメーターの円について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
草創

スピードメーターの円について

#1

投稿記事 by 草創 » 12年前

http://dixq.net/sm/d6.html
でメーターの書き方がありました。
そこでこの内側に円を描きたいのですがどうすればいいのでしょうか。
完全な円を書くことはできるのですがメモリがある部分だけに円を描きたいです。
画像は使いたくありません。
画像

Priest
記事: 123
登録日時: 12年前
住所: 愛知

Re: スピードメーターの円について

#2

投稿記事 by Priest » 12年前

SetDrawArea関数でメモリがある部分だけを描画範囲に指定するか
赤い直線を描く時に座標を求めていると思いますので,内側の座標を繋いで円を作るとかでしょうか.

コード:

#include <Priest.h>
int MyPolicy ( void ) { printf( "何事も楽しくね!" ); return 0; }

草創

Re: スピードメーターの円について

#3

投稿記事 by 草創 » 12年前

これでどうやって書けばいいのでしょうか。
なるべく滑らかな円にしたいです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: スピードメーターの円について

#4

投稿記事 by softya(ソフト屋) » 12年前

円を描画するときだけSetDrawAreaで描画範囲を絞って3回に分けて描画すればよいでしょう。

こんな風に分けます。 ※ 適当に描いたので都合の良い様に範囲を指定して下さい。
img5246457829f6b.png
img5246457829f6b.png (7.71 KiB) 閲覧数: 6424 回
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
usao
記事: 1892
登録日時: 12年前
連絡を取る:

Re: スピードメーターの円について

#5

投稿記事 by usao » 12年前

完全な円を描いたあとで,不要な部分を背景色で上書きするのではダメですか?
いらない部分を矩形で塗りつぶしとか.
線の切れ目を赤線と同じ角度の斜めにしたいなら三角形で.

草創

Re: スピードメーターの円について

#6

投稿記事 by 草創 » 12年前

このメーターが回転した場合はどうすればいいでしょうか。
空いているところが移動するので難しいです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: スピードメーターの円について

#7

投稿記事 by softya(ソフト屋) » 12年前

メーター全体が回転するんですか? とすると数字も回転するんでしょうか?
それは、ユーザーインターフェイスとして使いづらいような。

違う場合、想定している使い方を詳しく説明してもらわないとこちらも的確な回答が難しいです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

草創

Re: スピードメーターの円について

#8

投稿記事 by 草創 » 12年前

数字の表示は回転しないのですがメーターは回転します。
視力検査みたいに色々なところに切れ目ができます。

アバター
usao
記事: 1892
登録日時: 12年前
連絡を取る:

Re: スピードメーターの円について

#9

投稿記事 by usao » 12年前

とりあえず回転しない場合は描けてるのでしょうか?
できてるのであれば,あとはその描画の際に用いた座標を
回転量に合わせて変化させるだけの話でしょう.

三角関数がわかるなら回転させる方法は訊くまでも無い事柄だと思いますし,
「sin? cos? なにそれ美味しいの?」という状態なのであれば説明するのは難しいし…

[追記]
…っていうか,その元ネタのリンク先で三角関数つかってるハズだよな…
ということで念のため確認したら使ってたので,少なくともメータの赤線を書いている方法は理解されているのであれば
赤線群を回転させるのは簡単な話ですよね?
で,今回やりたいことが 赤線ごと回るのか,円弧だけ回るのか わかりませんが,
どちらにしろ考え方(というかやること)は同じではありませんか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: スピードメーターの円について

#10

投稿記事 by softya(ソフト屋) » 12年前

Priestさんの言うとおり、自前で円を描けば何とでもなります。
直線を1度単位とかにすれば綺麗な円になるのでは?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

草創

Re: スピードメーターの円について

#11

投稿記事 by 草創 » 12年前

返信ありがとうございます。
SetDrawAreaは座標の指定が2箇所だけなので三角関数を使うとこの2つの座標を軸にして回転しているようになってしまいます。
これはどうすればいいでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: スピードメーターの円について

#12

投稿記事 by softya(ソフト屋) » 12年前

よく意味がわかりませんので、ソースコードを提示してもらえますか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
usao
記事: 1892
登録日時: 12年前
連絡を取る:

Re: スピードメーターの円について

#13

投稿記事 by usao » 12年前

上に同じく,現状態がどうなってるのか読み取れないのですが,

そもそもSetDrawArea()というやつは 傾いた矩形領域を設定できるものではないと思うので
自前で回転した状態を作図するのには向いてなさそうに思います.(できなくはないでしょうが,その領域の計算がつらそう)

(前処理として無回転の絵を描いて用意しておき,その絵を毎度回転して描画するという話ならわかりますが.)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: スピードメーターの円について

#14

投稿記事 by softya(ソフト屋) » 12年前

makeScreenした専用スクリーンにメーターを描いて、それを更に回転させてメイン画面に描画させる事はできます。
ただ、やはりやりたい事が分からないので、この回答で正しいかは分かりません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る