8

既存のボタンに画像を追加しようとしています。ある程度は追加しましたが、問題は、所有者が描画した画像を追加できますが、必要な正確な画像を追加できないことです。例については、以下を参照してください。コード

CButton* pBtn= (CButton*)GetDlgItem(ID_WIZBACK);

   pBtn->ModifyStyle( 0, BS_ICON );

   HICON hIcn= (HICON)LoadImage(
        AfxGetApp()->m_hInstance,
  MAKEINTRESOURCE(IDI_ICON3),
        IMAGE_ICON,
        0,0, // use actual size
        LR_DEFAULTCOLOR
    );

    pBtn->SetIcon( hIcn );

上記のコードでは、ビットマップをアイコンに変換してボタンに追加しています...正確なビットマップ画像を既存のボタンに直接追加するにはどうすればよいですか。

4

6 に答える 6

5

mfcのボタンにビットマップを割り当てる手順:

  1. ビットマップのオブジェクトを作成します
  2. LoadBitmap()を使用してビットマップをロードします
  3. idGetDlgItem()メソッドを使用してボタンのハンドルを取得します
  4. ビットマップを割り当てることができるようにスタイルを変更します
  5. ボタンのハンドルでSetBitmap()を使用して、ビットマップを割り当てます

コード:

CBitmap bmp;

bmp.LoadBitmap( IDB_BITMAP4 );

CButton* pButton = (CButton* )GetDlgItem(IDC_BUTTON1);

pButton->ModifyStyle(0,BS_BITMAP);

pButton->SetBitmap(bmp);
于 2015-02-11T11:03:48.627 に答える
3

私は実際に問題を修正しました..私がしたことは、HICONをHBITMAPに置き換え、その動作は完璧です...基本的には両方とも正常に動作しますが、私の場合、アイコンをボタンにロードしたとき、アイコンの背景は変化しませんでした。 ..私はビットマップを試しました、そしてそれはうまくいきます。現在、画像の配置とテキストの追加に取り組んでいます...私が通過できると思います

于 2010-01-12T10:32:11.917 に答える
1

を使用して既存のボタンをサブクラス化しCBitmapButton::SubclassWindow、次にを使用できますLoadBitmaps

于 2010-01-12T08:09:56.013 に答える
1

これがどれだけ役に立ったかわかりません。投稿していただきありがとうございます。また、他のいくつかのこともビットマップに変更する必要があります...

CButton* pBtn= (CButton*)GetDlgItem(ID_MYDIALOG);
pBtn->ModifyStyle( 0, BS_BITMAP );

HBITMAP hIcn= (HBITMAP)LoadImage(
  AfxGetApp()->m_hInstance,
  MAKEINTRESOURCE(IDB_MYPIC),
  IMAGE_BITMAP,
  0,0, // use actual size
  LR_DEFAULTCOLOR
  );

pBtn->SetBitmap( hIcn );
于 2014-12-12T00:35:20.417 に答える
0

機能パックのボタンクラスを使用します。ボタンにテキストと画像の両方を表示することをサポートしていますが、通常のボタンではそれができません。VSインストールディレクトリの「samples」ディレクトリを確認します。

于 2010-01-12T18:53:50.600 に答える
0

@Amruta Ghodkeの答えにいくつかのアイデアを追加したいと思います:

GetWindowRectおよびSetWindowPos関数を使用してボタンのサイズを変更できます。以下の例を参照してください。

CRect rc;

pButton->GetWindowRect(rc);
pButton->SetWindowPos(NULL, rc.left, rc.top, myWidth, myHeight, SWP_NOSENDCHANGING | SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOMOVE);

透明な画像を表示する場合は、ソフトウェアPixelformerを使用してPNGをAlpha対応のBMPに変換します。あなたはしなければならない:

  1. [画像]->[プロパティ]に移動して設定しますRGB color with alpha channel
  2. フォーマットを使用してファイルをエクスポートしA8:R8:G8:B8、無効Premultiplied alphaにしてTop-down row order
于 2018-04-09T06:01:53.860 に答える