• ベストアンサー

CPalette::AnimatePaletteに関して

開発環境:VC++6.0,MFC,WinNT4.0です。 CPalette::AnimatePaletteの関数ですが、システムカラー256ではうまく 行きます。ところがシステムカラーの設定256以上ではうまくいかないようです。 基本的なやり方としては: CDC::SentPixelV(x, y, PALETTEINDEX(Index))を使って画面に絵を書きながら CPalette::AnimatePaletteで全体の色を換えたいのですが、256カラー以上の場合はCPalette::AnimatePaletteを適用した時点からの色しか変わりませんでした。 適用する前描いた絵の色はそのままです。 昨日、一日中本屋を探し回ったのですがいい資料が見つかりませんでした。 どなたか教えてくれれば助かります。 お願いします。

  • a--he
  • お礼率44% (30/67)

質問者が選んだベストアンサー

  • ベストアンサー
noname#11476
noname#11476
回答No.2

単にbitmapのCDCを作って、そちらにオリジナルデータを書いていき、 画面上にはオリジナル→画面で転送して、そのときにカラーを操作すればよいのでは?

a--he
質問者

補足

ありがとうございます。 実際にそういう感じでやっています。 つまり、 CBitmap::CreateCompatibleBitmap CDC::CreateCompatibleDC CDC::SelectObject(&CBitmap) でCDCを作成し、BitBltでViewのDCに転送していますけれども、、 それがうまく行きません。 オリジナルではカラー操作を全くしないと言うことですかね、、 なんとなく分かったような気もするけれども、、 もうちょっとやってみます。

その他の回答 (2)

noname#11476
noname#11476
回答No.3

そういうことです。 つまりどの道システムにはそういうパレットはありませんので、 オリジナルの各ビットのカラー値を別のカラー値に変更する独自のパレットテーブル(又は変換式)を用意して、変換しながら画面に描画します。 速度が遅ければ、もう一枚バッファとなるビットマップを用意すればよいでしょう。 (ただ、直接ポインタでアクセスすればそんなに遅くないと思いますけど)

回答No.1

パレットですから、256色モードまでしか使えないのでは? その上の32768色、65536色、・・・にはパレット情報が ありません

a--he
質問者

補足

そういえばそうですね、 他になんかのやり方で256以上のモードで色を変える方法ってないでしょうかね。 実は、外からの信号を画面に表示する作業なので、基本的CDC::SentPixelVを使って再描画することは無理ですし、どうしても画面色をいろいろ変えなければいけないと言うのがあります。 早速の返事ありがとうございます。

関連するQ&A

  • デバイスコンテキストに書いた絵をBMPファイルに落としたいです。

    MFCを使っています。 OS:WINNT4.0 環境:VisialC++ CDCクラスのSetPixel,Bitbltなどの関数を使ってデバイスコンテキストに 書いた絵をBMPファイル(あるいはJPGなどの画像ファイル)として保存した いのですが、、、方法を教えてください。 よろしくお願いします。

  • VC++2010 ボタンなどのレイアウト大きさ変更

    VC++2010のMFCで現在開発しているんですが、 ボタン、スタティックテキスト、エディットボックスの文字の大きさを変更したいんですが どのようにすればいいかわかりません。よろしくお願いします。 またステータスバーに色を付けたいんですがどのようにすれば色を付けることができますか? よろしくお願いします。

  • スタティックライブラリ

    スタティックライブラリ使用にできるんでしょうか。 できればVB.NET、最悪VC#.NET、MFC不可。 実行を想定している環境でC:\WINNT\SYSTEM32への書き込みアクセス件がないので、ランタイムなしにできないもんでしょうか。

  • クリックした位置に画像を貼り付ける方法

    開発環境はWinXP、C++、MFCを使っています。 C++を勉強し始めた初心者です。 画面上で左クリックされた位置に画像(ビットマップ画像)を表示させる簡易プログラムを作ろうとしています。 ここで、マウスの位置を取得する方法がわかりません。理解しやすい方法があれば押してください。 ちなみにこんな感じでつくってます。。。↓ void Canvas::MakeStamp() //Canvas ・MaskStamp共に任意の名前 { // //ここでマウスの位置を取得したいです // //画像を貼り付け CClientDC cdc(this); CDC bmpCDC; bmpCDC.CreateCompatibleDC(&cdc); CBitmap bmp; bmp.LoadBitmap(STAMP); //STAMPは任意の名前 bmpCDC.SelectObject(bmp); cdc.BitBlt(X,Y,60,60,&bmpCDC,0,0,SRCCOPY); //ここのX,Yはクリックした座標を当てはめるつもりです。 } よろしくお願いします。

  • VC++でのリンクエラー [error LNK2005]

    VC++でMFCを使用してダイアログベースのEXEを 作成しています。 以下のクラスのメンバ関数などを使用して、色の操作をしています。 CDC::SetBkColor() CDC::SetTextColor() ビルド時、以下のリンクエラーとなりました。 ---------------------------------------------- nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) はすでに LIBCMT.lib(delete.obj) で 定義されています Release/MenueTest.exe : fatal error LNK1169: 1 つ 以上の複数回定義されているシンボルが見つかりました link.exe の実行エラー ---------------------------------------------- MFC と C(?)のライブラリで delete()関数が競合しているようですが、これを回避する方法をご存知の方、ご教授願います。 <環境> OS:Windows2000 VC++6.0 <備考> リンクエラーになるのは以下の組み合わせです。 「MFCをスタティックリンクする+リリース版」 MFCをスタティックリンクしてもデバッグ版のビルドだとエラーになりません。 また、MFCをスタティックリンクしない場合もエラーにはなりません。 ただし、リンクエラーにならなかった場合、どちらのオブジェクトの delete()関数が呼ばれるか不明で、それが正しいのかも心配です。

  • あの時見た設定資料集のタイトルを教えてください。

    3ヶ月ほど前に本屋で見かけた設定資料集で、凄く欲しかったのですが、お金が無いので次回にと思ってる内にいつの間にか無くなっていました。他の本屋に行ってもそれらしき物が見つかりません。タイトルすら覚えていないので、みつけられずに困っています。 そこの本屋さんと僕の記憶を合わせると、表紙はカラシ色で茶色のイラスト、値段は2,3千円、中身はゲームかアニメの設定資料で、ファンタジー系の内容で飛行船の絵が沢山乗っていたと記憶しています。 ほとんど、覚えてなくてすいません。近い内容の物をご存じでしたらタイトルを教えてください。

  • ソースファイルを追加すると、プログラムが動かなくなる。

    こんにちは。 VC++6.0を使い、先輩が作ったプログラム(デバッグ済み、実行の確認済み)に、 "Beep(400,100)"を追加して、リビルドを行った。 リビルドがうまくいったが、実行が全くできなかった。(途中でPCがハングアップしたようです。ウィンドの"×"をクリックすると、"プログラムが応答していません"とのメッセージBOXが表示された。) デバッグウィンドに下記のメッセージが書かれました。 D:\USB\確認用\LI01Check\Release\LI01Check.exe' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINNT\System32\ntdll.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINNT\system32\WinRTUSB.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINNT\system32\kernel32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINNT\system32\user32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINNT\system32\gdi32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINNT\system32\imm32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINNT\system32\MFC42LOC.DLL' をロードしました、合致するシンボル情報は見つかりませんでした。 私は、VC++がなので、ぜんぜんわかりません。よろしくお願いします。同じプログラムがうまく実行できた事もある。ただ、一度エラーが出ると、修正前のプログラムも実行できなくなる。 (エラーリストにリストアップされているdllファイルの存在も確認してあります。) 初心者なので、よろしく、お願いします。

  • イラストレーター ハッチ効果をした後、色の変更はできるでしょうか。

    イラストレーターで花の絵を描いてハッチ効果を適用しました。 後になって色を変えたいと思い、カラーパレットで変換しようと思ったのですが、できませんでした。 何か方法はあるでしょうか。

  • 絵や写真が多い動物図鑑を探してます。

    絵を描くときの資料として、下記のような動物図鑑を探しています。 ・1匹に対して上から見た図、横から見た図、骨格など細かく描かれている ・いろんな種類の動物が描かれている ・なるべくカラー ・医学書や洋書でも構いません。 図鑑は高い上に普通の本屋だとあまり数も置いていないので どなたかご存知の方、よろしくお願いします。

  • A3カラー複合機を探しています

    A3サイズをカラーで印刷&スキャンが出来るものを探しています。 ブラザーのMFC-6890CNが候補にあるのですが、色の再現率が悪いというのを聞きました。 写真や絵を印刷したいので綺麗に色がでるものが欲しいです。 素人なのでよくわからない事を言っているかもしれませんが、どうかよろしくお願い致します。