ある色を別の色にして元に戻す – プログラミング – Home

ある色を別の色にして元に戻す
 
通知
すべてクリア

[解決済] ある色を別の色にして元に戻す


不和くん
 不和くん
(@不和くん)
ゲスト
結合: 20年前
投稿: 6
Topic starter  

わかりにくいタイトルですみません。
短く出来なかったもので…

では、質問させていただきます。
日の丸の絵を描画したとします。(バック白で丸が赤)
このバックの白の部分だけを緑に変えたいです。
そして、ある時がきたらまた白に戻したいです。

その色で色を塗ればいいじゃないかと思われるかもしれませんが、
日の丸はあくまで例でして、実際は時間でスクロールする絵で、
描画するのも図形ではなくチャート(線)です。
チャートの書き方は、絵を少しだけスクロールさせて
スクロールした分だけ新しいチャート(線)を書きます。
したがって、既に絵を書いた物の色をすりかえる方法が
あればいいのですがいい方法が浮かびません。

あと、毎回バックも含めて表示するチャートを全て描画すれば
できるんですが、そうすると変更が大変なので
出来れば今の方法で行きたいのです。

何かいい方法はありますか?ご教授お願いします。


引用未解決
トピックタグ
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

回答ではなく確認ですが、、、

背景:スクロールする絵
前景:チャート(線)
でよろしいですか?

次に、背景はビットマップがスクロールしているようなイメージで、
スクロールの他は変化なし?

チャートについては変化あり?なし?
色は特定の1色?数色?無制限?

これらの前提からどうして、
『既に絵を書いた物の色をすりかえる方法があればいい』
につながるのでしょうか?

さて、したいことが私にはまだ見えてきませんが、
『毎回バックも含めて表示する』のが正攻法だと思うので、
頑張って変更するのが良さそうですが。

もっと状況が判り、私が何かの役に立ちそうでしたらアドバイス
させてもらいます。


返信引用
不和くん
 不和くん
(@不和くん)
ゲスト
結合: 20年前
投稿: 6
Topic starter  

>背景:スクロールする絵
>前景:チャート(線)
>でよろしいですか?
はい

>次に、背景はビットマップがスクロールしているようなイメージで、
>スクロールの他は変化なし?
背景は10秒間隔で縦線を引いたものがスクロールしていくだけです。

>チャートについては変化あり?なし?
>色は特定の1色?数色?無制限?
チャートは16ペンの線(16色固定)です。
ある測定値をチャートで表示。(リアルタイムグラフ)

>これらの前提からどうして、
>『既に絵を書いた物の色をすりかえる方法があればいい』
>につながるのでしょうか?
チャートの書き方は、絵を少しだけスクロールさせて
スクロールした分だけ新しいチャート(線)を書きます。
既に書かれた絵なので色をすりかえれば出来るのかなと
漠然と思っただけです。実際にはどうやるのがいいのかわからないので。

アドバイスいただけますでしょうか?


返信引用
不和くん
 不和くん
(@不和くん)
ゲスト
結合: 20年前
投稿: 6
Topic starter  

やりたいことというのは
背景の縦線以外の部分が白だとして
あるタイミングで赤に変えて
またあるタイミングで白に変えたい
ということです。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

メモリとかリソース云々を言わないなら、
バックバッファを二つ取っていてそれぞれ背景が白の物と赤の物を平行して描画します。
通常は白の方のバックバッファから実画面に転送するようにして赤くしたい時は
赤の方のバックバッファから転送するようにして両方を常に同じように更新しておけば、
転送元を切り替えるだけで済みます。

最も、バックバッファを使うのであれば描画は早いので毎回背景を塗りなおしても
実用的なスピードは出そうな気がするので、毎回全て再描画するためにはチャート全体を
書き直しても良いような気もします。
そのために描画用の座標データを全て保持しておく必要がありますが、
ウインドウが重なって描画された場合の再描画を考えたら保持しておいて再描画を
する必要があると思うので既に保持していると考えれば、特に手間でもないような気が
します。


返信引用
不和くん
 不和くん
(@不和くん)
ゲスト
結合: 20年前
投稿: 6
Topic starter  

>メモリとかリソース云々を言わないなら、
バックバッファ2つというのを検討してみます。

>最も、バックバッファを使うのであれば描画は早いので毎回背景を塗りなおしても
リアルタイムグラフ部分の描画がライブラリ化されてまして
ソースはあるんでいじれるんですがソース解析するのとテストするのとを
考えると結構時間がかかりそうなんです。
もちろんいずれ直していこうと考えてますが。
また、毎回全描画する方法だと微妙にグラフが違ったりしませんか?
X軸の計算上ドットとドットの間くらいになるとどっちかにずれてしまって…
そういうことがあってスクロールする方式に変えたらしいです。

アドバイスありがとうございました。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

> また、毎回全描画する方法だと微妙にグラフが違ったりしませんか?
> X軸の計算上ドットとドットの間くらいになるとどっちかにずれてしまって…
> そういうことがあってスクロールする方式に変えたらしいです。

小数点以下の値になる場合はいずれにしても整数値にまるめるしかないはずなので
スクロールしようが毎回描画しようが同じになると思うのですけれど。
ドットとドットの間なんてそもそも表現する方法が無いという点では、
スクロールでも描画でも同じだと思います。
計算上のまるめが画面解像度よりも荒いのであればわからなくもないですが、
それなら解像度が許す限り表現できるように計算すれば良いと思います。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

というか、上記のような事を気にするのであればX軸の刻みがきちんとドット上に載る様に
設定した上で、スクロール後の位置が中途半端な位置にならないようにスクロール幅を
決めるようにしないと同じ事だと思います。スクロールにしても結局ドットを跨ぐような
スクロールは出来ないはずなのでどちらかにずれている筈です。
この場合、スクロール後に書き足した部分との継ぎ目がうまく行かなくなる部分が出てくる
はずなので何処にひずみが出るかの違いだけで根本的な解決にはなっていないと思います。
もしかしたらスクロール時に実際の幅をまるめまで込みで計算して書き足しているのかも
しれませんけれど、それならスクロール時の起点を計算する時にまるめまで込みで計算すれば
良いだけなので結果的には同じ事だと思います。


返信引用
不和くん
 不和くん
(@不和くん)
ゲスト
結合: 20年前
投稿: 6
Topic starter  

残念なことにドット上に載る様にというのが
無理な場合もあるわけです。
グラフの幅(ドット)やスクロール速度を指定される場合ですね。
その場合はスクロール方式をとるしかないのです。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

スクロール時の綺麗さを取ると言う目的であれば、そうなるのか知れないですね。
一つ疑問に思ったのは、最近の高解像度のディスプレイの場合は1ドット程度のずれは
ほとんど分からないように思うんですが、ズレが気になるほどひどいんでしょうか。
1ドットのX軸方向の刻みに小数点以下の数が入ってくるような場合を言われていると
思うのですけれど、いまひとつ状況が納得いかないと言うか。
あと、考え方の話になりますが、設定された幅やスクロール速度をうまくスクロールできる
ような状態に調整してある程度の組み合わせに限定してしまうと言う方法もあるかなと
思いました。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

連続書き込みで申し訳ないのですけれど、
もしかしてスクロール時にグラフの線がぶれたようになると言うことでしょうか。
もしそうなら納得が行くような気もします。


返信引用
不和くん
 不和くん
(@不和くん)
ゲスト
結合: 20年前
投稿: 6
Topic starter  

>もしかしてスクロール時にグラフの線がぶれたようになると言うことでしょうか。
そうです。このブレが気になるそうです。
自分は気にならないんですけどね。

>あと、考え方の話になりますが、設定された幅やスクロール速度をうまくスクロールで
きる
もっと色々いじれる時間があればいいのですが…(あとスキルも)


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました