質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

2回答

7531閲覧

画像のフェードインのやり方について

wug

総合スコア13

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2015/10/01 13:26

リソースとして読み込んだLogo.bmpをフェードインしながら画面に表示させたいのですがどうやればいいでしょうか?

//ロゴ画面 //----------------------------------------------------------------------------- #include "Task_Logo.h" #include "Task_Brand.h" namespace Logo { //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ //リソース //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ //----------------------------------------------------------------------------- //安全の為に、追加したリソース用の変数はここで予めゼロクリアしておく Resorce::Resorce( ) { this->img = nullptr; } //----------------------------------------------------------------------------- //リソース読み込みはここに書く bool Resorce::Initalize( ) { this->img = DG::Image::Create("./data/image/Logo.bmp"); return true; } //----------------------------------------------------------------------------- //リソース解放はここに書く bool Resorce::Finalize( ) { this->img.reset(); return true; } //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ //本体 //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ //----------------------------------------------------------------------------- //「初期化」タスク生成時に1回だけ行う処理 bool Object::Initialize( ) { __super::Initialize(defGroupName, defName, true); //スーパークラス初期化 //固有情報の初期化 ge->dg->EState( ).param.bgColor = ML::Color(1,1,1,1); return true; } //----------------------------------------------------------------------------- //「実行」1フレーム毎に行う処理 void Object::Step( ) { if( ge->in1->Button_Down(DI::But::○) ){ this->Kill( ); //自分自身に消滅申請 } } //----------------------------------------------------------------------------- //「2D描画」1フレーム毎に行う処理 void Object::Draw2D_BF( ) { ML::Box2D draw(0, 0, 1920, 1080); ML::Box2D src (0, 0, 1920, 1080); draw.Offset(0, 0); res->img->Draw(draw, src); } //----------------------------------------------------------------------------- //「終了」タスク消滅時に1回だけ行う処理 bool Object::Finalize( ) { //固有情報の解放 //その他・後処理 //配下の削除 //引き継ぎタスクの生成 auto next = Brand::Object::Create( ); ge->PushBack(next); return true; } //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ //本体・リソース双方の基本的に変更不要なメソッド //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ //----------------------------------------------------------------------------- //タスク生成窓口 Object::SP Object::Create( ) { Object::SP ob = Object::SP(new Object( )); if(ob){ ob->me = ob; if( ob->B_Initialize( ) ){ return ob; } } return nullptr; } //----------------------------------------------------------------------------- bool Object::B_Initialize( ) { res = Resorce::GetInst( ); //リソース準備 return this->Initialize( ); } //----------------------------------------------------------------------------- Object::~Object( ){ this->B_Finalize( ); } bool Object::B_Finalize( ) { auto rtv = this->Finalize( ); res.reset( ); return rtv; } //----------------------------------------------------------------------------- Object::Object( ){ } //----------------------------------------------------------------------------- Resorce::WP Resorce::instWPtr; //----------------------------------------------------------------------------- Resorce::SP Resorce::GetInst( ) { if(!instWPtr.expired( )){ return instWPtr.lock( ); } else{ SP sp = SP(new Resorce( )); sp->Initalize( ); instWPtr = sp; return sp; } } //----------------------------------------------------------------------------- Resorce::~Resorce( ){ this->Finalize( ); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

DG や ML が何なのか分からないため難しいですが…

ロゴを「移動する」プログラムは書けるでしょうか?
毎フレームごとに、ロゴの位置を計算しながら描画を行います。
例えば、時刻1000~2000の間に、ロゴのx座標を0~1920に移動させるなら、
x = ({現在の時刻} - 1000) * 1920 / (2000 - 1000) で求められます。

それができれば簡単です。
毎フレーム、例えば透明度を計算しながらロゴを描画すればOKです。

投稿2016/03/29 02:41

ttoonnaa

総合スコア57

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

初心者なので、誤りがあったらゴメンなさい…

まず、画像をフェードインさせるための基本的な処理方式としては

  • 背景と同じ色の四角形を被せてその透明度を「不透明→透明」と変化させる
  • 画像そのものの輝度を「暗→明」と変化させる

などがあるようですが、一般的には後者の「画像そのものの輝度」を変化させる方式が採用されているようです。

では、画像の輝度をどうやって変化させるか、というと、全てを自らC言語で記述することも可能なのでしょうが、普通はグラフィックAPIを使用します。その代表例は下記になります。

  • Windows なら DirectX
  • クラスプラットフォーム なら OpenGL

次に、APIを直接呼び出すことももちろん出来ますけれども、様々なグラフィックライブラリが開発されており、目的に合わせて選んだライブラリを経由してAPIを操作するのが一般的なようです。

Windows環境(DirectX)で DXライブラリ を使用した実装例が こちら に掲載されていました。

以上、ご参考になれば幸いです。

投稿2015/10/03 10:28

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問