リソースのPNG画像を使う方法

透過PNG画像をダイアログ上のコントロールとして表示する必要が出来たので、リソースからPNG画像を読み込み Gdiplus::Bitmap で取得するコードを書きました。 ついでにビットマップ(BMP)画像も Gdiplus で扱いやすいように Bitmap で取得するようにと思ったのですが、何故か同じ方法ではうまく行かず。 Gdiplus::Bitmap にはリソースから Bitmap を作成するメソッドが用意されているのでそれを使うようにしました。 (ただインスタンスも指定しなければビットマップを作れないので別段これに実装する必要は無かったかも・・・) 手順としては以下のようになります。 1.FindResource()でリソースを探します。 2.SizeofResource()でリソースのサイズを取得。 3.LoadResource()でリソースを読み込んで LockResource() でメモリーをロックします。  (LoadResource()はHGLOBALを返しますが実際はグローバルメモリーに読み込まないため、LockResource()でポインターを取得します。) 4.グローバルメモリーを作り、3で取得したリソースデータをコピーします。 5.4のグローバルメモリーからIStreamポインターを作成します 6.5の IStream から Gdiplus::Bitmap を作成します。 途中で失敗した場合は例外を投げて処理を中断します。 実際にコードにするとこんな感じです。 Gdiplus::Bitmap* LoadImageFromResource(UINT nID, LPCTSTR pResourceType = RT_BITMAP, HMODULE hInstance = NULL) { HGLOBAL hRcBuf = NULL; void* pRcBuf = NULL; IStream* pIStream = NULL; Gdiplus::Bitmap *pBitmap = NULL; try { LPCTSTR pName = MAKEINTRESOURCE(nID); if (pResourceType == RT_BITMAP) {

Django Webアプリ を AWS Elastic Beanstalk にデプロイする際にDBを初期化する

  1. .ebextensionsフォルダに db-migrate.config といった名前でファイルを追加します。
  2. db-migrate.config ファイルに以下のように書き込みます。
    container_commands:
      01_migrate:
        command: "django-admin.py migrate"
        leader_only: true
      02_loaddata:
        command: "django-admin.py loaddata app/fixture/fixtures.json"
        leader_only: true
    option_settings:
      aws:elasticbeanstalk:application:environment:
        DJANGO_SETTINGS_MODULE: ebdjango.settings
  3. 上記ファイルを追加した状態で、デプロイすれば migrate , loaddata の順番で実行されます。
もし複数の fixture ファイルをインポートしたい場合。

03_loaddata_etc:
  command : "django-admin.py loaddata app/fixture/fixtures_etc.json"
  leader_only: true

のように複数のコマンドに分けて追記します。

参考:

コメント

このブログの人気の投稿

リソースのPNG画像を使う方法