
色を合成するにはどうしたらよいでしょうか。
降雨量を示す図を作ろうと思っています。
ピクチャーボックスに、すごく薄い灰色の四角形をいくつか描画し、
四角形がいくつも重なる場合は、重なり合う部分が濃くなるようにしたいのです。
以下の図で、
ABCが重なる部分が一番濃く、AとB AとC が重なる部分が次に濃く
Aのみ、Bのみ、Cのみが薄くなるように描画するにはどうしたらよいでしょうか
AAAAAAAAAA
A A
A CCCCCCACCCCCCC
A C A C
BBBBBBBBBBB A C
B A C B A C
B A CCCCCCACCCCCCC
B A B A
B AAAAAABAAA
B B
BBBBBBBBBBB
API関数( StretchBlt ) を使ってみました。
異なる色を重ねた場合は濃くなりますが、同じ色は重ねても濃くならないのです
四角形と四角形の重なる部分を取り出すAPI関数もありますが、
四角形が複数だとどうしようもありません。何かよい方法はありますか?
どうか、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
私は、VBはよく知らないのですが、回答がついていないようなので、
私のできる範囲で回答します。たぶん、動作は遅いです。
描画領域に対応する2次元の配列を用意する。
0などにリセットする。
それぞれの四角形を「描く」、つまり、2次元の配列の対応する要素に、
ある値を加算していく。
2次元配列に対応する図を実際に描く。
という作業でできると思います。
昔その方法を使ったことがあります。NEC PC8001 のころでした。
今は配列の必要はありません。
処理量が多いので動作が遅いと思っていたのですが、
実際に試してみるとそうでもありませんでした。
やはり、意見を伺ってみて正解でした。ありがとうございました。
No.3
- 回答日時:
画像とWEBが苦手なのではずしているかもしれないけど・・・GetPixelを調べてみましたか?
色の単位枠はピクセルです。ピクセル単位での色を取得し、色を色素分けして他の色素と加算したらできるのではないかな?
現在のソースを公開したほうがわかりやすいかも?
ソースを公開しようとしたのですが、投降時に文字数制限がありました。
やはり、ご指摘の方法がベスト(それしかないと思われます)
ありがとうございました。感謝いたします。
No.2
- 回答日時:
手元に開発環境がないのでヒントだけを。
色はRGB(赤緑青)の光の三原色の数値の組み合わせで決定されます。
白は0,0,0、黒は255,255,255です。
ということは、色を濃くしたいということであれば、値を増やしてあげればいいですよね。
色の専門家ではないので、どのような割合で増やせば倍の濃さになるかというのはわからないのですが。
以下の方法でうまく行きました。
Pointメソッドで座標の色を取得
色の値を256で割って余り求めを3回行い 赤緑青の三原色の値に分解
3つの値を少し小さくして、PSetメソッドで元のピクチャーに上書きする
それを四角形の枠内すべてのドットで繰り返す
グラフ程度の範囲なら処理速度にそれほど影響ありませんでした
ご指摘ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ListBoxで改行したい
-
C++/CLIを用いて画像をクリップ...
-
for文の実行速度を遅くしたいの...
-
C#を用いて描画する四角形の角...
-
ビットマップに描画をしてピク...
-
VB.netで図形描画ができません^^;
-
c言語 ちらつき
-
PictureBoxのダブルバッファリ...
-
MFCでのコンボボックスについて
-
花火のアルゴリズム
-
Excel VBA:コントロールボタン...
-
VC++ MFCチェックボックスの色...
-
Visual C++ MaskedTextBoxの右...
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
実行時エラー 438になった時の...
-
「Columns("A:C")」の列文字を...
-
VBAがブレークモードになっ...
-
ユーザーフォームを表示中にシ...
-
VBA ユーザーフォームの Keypre...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
C++プログラミングについて。
-
Excel VBA:コントロールボタン...
-
C#を用いて描画する四角形の角...
-
MFCでのコンボボックスについて
-
ビットマップに描画をしてピク...
-
PowerPoint の VBA
-
円の頂点の求め方を知りたいです。
-
[続編] pictureBoxそのものの...
-
for文の実行速度を遅くしたいの...
-
給紙トレイをダイアログを使わ...
-
文字のちらつきを抑えるには
-
画面に絵を出す方法
-
delphi 画面のちらつき
-
shapeを描画
-
VC;;6.0のMFCで線を簡単に引け...
-
vc++のペイント処理。
-
win32api複数のタイマーを同時...
-
c言語 ちらつき
-
Visual C++ MaskedTextBoxの右...
おすすめ情報