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

我实际上解决了这个问题..我所做的是我用 HBITMAP 替换了 HICON,它的工作完美......基本上两者都可以正常工作,但在我的情况下,当我将图标加载到按钮中时,图标的背景没有改变。 ..我试过位图然后效果很好。现在正在定位图像并添加文本......我想我可以通过

于 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

I want to add some ideas to @Amruta Ghodke 's answer:

You can resize your button using the GetWindowRect and SetWindowPos functions. See an example below:

CRect rc;

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

If you want to display transparent images, use the software Pixelformer to convert your PNGs to Alpha-enabled BMPs. You will have to:

  1. Go to Image->Properties and set RGB color with alpha channel
  2. Export the file using format A8:R8:G8:B8 and disabled Premultiplied alpha and Top-down row order
于 2018-04-09T06:01:53.860 回答