アプリ版:「スタンプのみでお礼する」機能のリリースについて

c++builderで二次元配列をしています。
a[1][1]="あ"
a[2][1]="い"
といったように文字を配列に割り当てることは出来るのできます。
しかし、この配列に画像を割り当てる方法がわかりません。
どうしたらよいでしょうか、教えてください。

A 回答 (5件)

★補足に付いて回答。


・最初にこの質問は最終的に何を行いたいのでしょうか?
 今やりたいことはビットマップのイメージ内容を変数に代入したいようですが
 その後にウインドウに描画(表示)したいのですか?それともアニメーション?
・回答者 No.3 さんの補足を読むと Windows プログラミングは経験が無いみたいですね。
 単純に既存のビットマップをウインドウに描画(表示)するだけなら2次配列に
 イメージ内容を読み込まなくても LoadImage() または LoadBitmap() という Win32 APIの
 関数を使って読み込みます。すると戻り値に HBITMAP というハンドルを返しますので
 これを使って簡単に BitBlt() 関数などで描画(表示)できます。
 なお HBITMAP ハンドルにはビットマップのイメージ内容が既にメモリ内に読み込まれています。
 別に2次配列に入れなおす必要も無いです。この『ハンドル』を利用すれば良いので。
・下に単純に読み込むだけのサンプルを載せておきます。

サンプル:
LPCTSTR lpPath = TEXT("C:\\…\\sample.bmp"); ←ファイル名
HBITMAP hBmp;

if ( (hBmp = LoadImage(NULL,lpPath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE)) == NULL ){
 /* ビットマップのファイルが読み込めないエラー(存在しないとか) */
}
else{
 /* 読み込めたらここで描画処理 */
}

ちなみに:
HANDLE LoadImage(
 HINSTANCE hinst, // インスタンスのハンドル
 LPCTSTR lpszName, // イメージの名前または識別子
 UINT uType, // イメージのタイプ
 int cxDesired, // 希望する幅
 int cyDesired, // 希望する高さ
 UINT fuLoad // ロードのオプション
);

その他:
・上記の API 関数で簡単に HBITMAP ハンドルに読み込めます。
 読み込んだハンドル(メモリ)をプログラムの終了前に破棄して下さい。
 破棄の仕方は『DeleteObject( hBmp );』の1行で良いです。
・描画するときには
 (1)描画するデバイスコンテキストを取得
 (2)CreateCompatibleBitmap() で(1)と互換のあるメモリデバイスコンテキストを作成
 (3)SelectObject() で (2) に HBITMAP のハンドルを関連付ける
 (4)BitBlt()、StretchBlt() などで描画
 こんなステップになります。
・とりあえず開発環境(OS)、グラフィック環境(Win32 API、DirectX、OpenGLどれ)を
 お聞きしたいですね。回答者 No.3 さんの補足で分からないとなっていますが
 これが分からないと上記のように勝手に Windows プログラミングだと決め付けて
 回答しちゃいますよ。私は。これであっていれば良いが…。
・その他は下の『参考URL』の『C+API』を読みましょう。
 一番下には『C++ Builder でのプログラミング』で『お絵描きソフトを作ってみる』が
 あります。あまり詳しくないけど。
・以上。参考にどうぞ。

参考URL:http://www.sm.rim.or.jp/~shishido/windows.html
    • good
    • 0
この回答へのお礼

回答していただいた皆さんありがとうございました。
何か質問の内容が変わったようなきがするので、
具体的に書いてもう一度質問したいと思います。
ありがとうございました。

お礼日時:2007/09/12 23:09

>ただ、もともとあるビットマップイメージを


>割り当てたいだけなのですが。
>初心者過ぎてすみません。

グラフィックの表示ですが、c++builderにはVCLがあったのを思い出しました。それを使うのがセオリーだと思いますので、それを使いましょう。
で、c++builderのVCLは専門外なのでサイト紹介しかできません。
http://www2.ttcn.ne.jp/~tkky/index.htm
http://ww4.tiki.ne.jp/~yonyon/programing/bcb/lec …
参考になれば良いんですが。

「C++ Builder / Turbo C++ 質問の木」
http://gimite.net/bcbqtree/qtreemain.cgi
というのもありますから活用してください。

>型宣言はchar型です。
文字列"あ"は、charのポインタ型にしか代入できません。
基本的なC言語の文法も勉強不足かな?本をもう一度読み直してみましょう。
    • good
    • 0

Oh-Orangeさんじゃないですが、まずグラフィックを表示するために使用する予定のライブラリ、APIを教えてください。


(1)WindowsAPI
(2)DirectX
(3)DXライブラリ等のグラフィックライブラリ。
(4)よく分からない。
(5)その他。その場合は名前を教えてください。

ちなみに、
a[1][1]="あ";
a[2][1]="い";
でエラーでない型宣言は、
char *a[3][2];
ですが同じですか?
違っていたら、どんな型宣言をしていたか教えてください。

この回答への補足

回答ありがとうございます。

(4)です。
型宣言はchar型です。
ただ、もともとあるビットマップイメージを
割り当てたいだけなのですが。
初心者過ぎてすみません。

補足日時:2007/09/11 23:06
    • good
    • 0

画像の場合はもっと沢山の文字を格納する感じになる


HTMLのような a[3][1]="<img src=xx.jpg>" という形ではない。
ファイル操作を行い読み込まなければならない。
    • good
    • 0

★画像は割り当てられないです。


・画像のパス名か、画像データの内容を char 型の配列に入れるなら出来ますけど。
>しかし、この配列に画像を割り当てる方法がわかりません。
 ↑
 意味が良く分かりません。
 何がしたいのですか?
・以上。補足要求です。

この回答への補足

回答ありがとうございます。
画像は割り当てられないのですか・・自分が間違っていたようです。
「画像データの内容を char 型の配列に入れる」
 ↑この場合どうやって記述するのでしょうか。
初歩的過ぎかもしれませんが、教えていただければ幸いです。

補足日時:2007/09/11 21:37
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!