輝度を変えて描画する関数

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

輝度を変えて描画する関数

#1

投稿記事 by 紙飛行機 » 15年前

輝度を変えて描画する関数を作ろうと思ってます。
ユーザーが指定したBrightから最初にセットする
輝度の値を拾いたいのですがどの様にすれば拾ってこれるのでしょうか?

Brightは0xffffffのようにセットし2桁でRGBを管理するようにしたいです。

void DrawCenterBright(int x,int y,int GrHandle,int Bright, int Alpha,bool Turn){
SetDrawBright(128,255,255);
     // 描画処理
SetDrawBright(255,255,255);
}

たいちう

Re:輝度を変えて描画する関数

#2

投稿記事 by たいちう » 15年前

これのことですか?

http://homepage2.nifty.com/natupaji/temp/DxLib.h
extern int GetDrawBright( int *Red, int *Green, int *Blue ) ; // 描画輝度を取得する

紙飛行機

Re:輝度を変えて描画する関数

#3

投稿記事 by 紙飛行機 » 15年前

すいません。
現在の輝度を拾ってくるのではなく
Brightに0xffffffと値を渡すと
ff,ff,ffのパラメータを見るような仕様にしたいです。

たいちう

Re:輝度を変えて描画する関数

#4

投稿記事 by たいちう » 15年前

それでは、こういうことですか?
int bright = 0x123456;
int br = bright >> 16;
int bg = (bright >> 8) & 0xff;
int bb = bright & 0xff;
printf("%02x, %02x, %02x\n", br, bg, bb);

たいちう

Re:輝度を変えて描画する関数

#5

投稿記事 by たいちう » 15年前

一応逆も。
int bright2 = br << 16 | bg << 8 | bb;
printf("0x%06x\n", bright2);

既に用意されているマクロを使う方法もあります。
(私の書いた例とはRGBの順番が逆になることに注意)
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
#define GetRValue(rgb) ((BYTE)(rgb))
#define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8))
#define GetBValue(rgb) ((BYTE)((rgb)>>16))

toyo

Re:輝度を変えて描画する関数

#6

投稿記事 by toyo » 15年前

luminance = ( 0.298912 * r + 0.586611 * g + 0.114478 * b );
を輝度とするとRGBから輝度へは変換できますが輝度からRGBへは一通りには求められません
(未知数が3個で式が1つしかないので)

たいちう

Re:輝度を変えて描画する関数

#7

投稿記事 by たいちう » 15年前

> luminance = ( 0.298912 * r + 0.586611 * g + 0.114478 * b );
> を輝度とするとRGBから輝度へは変換できますが輝度からRGBへは一通りには求められません

その輝度とSetDrawBrightで設定する輝度は違うものと思いますが、
紙飛行機さんが(もしかしたら私も?)混同している可能性はありますね。

紙飛行機

Re:輝度を変えて描画する関数

#8

投稿記事 by 紙飛行機 » 15年前

みなさま、色々な回答ありがとうございます。

やりたかったことはたいちう様の

int bright = 0x123456;
int br = bright >> 16;
int bg = (bright >> 8) & 0xff;
int bb = bright & 0xff;
printf("%02x, %02x, %02x\n", br, bg, bb);

です。
改修したところ問題なく動きました。
ありがとうございます。

この>>や&の意味が良くわからないのですが
どういうことなのでしょうか?
調べてみたらシフト演算?とand?という単語を見つけたのですが
理解できませんでした。

たいちう

Re:輝度を変えて描画する関数

#9

投稿記事 by たいちう » 15年前

http://www9.plala.or.jp/sgwr-t/c/sec14.html

これで分からなければ、再度具体的に質問してください。

閉鎖

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