我正在尝试将图像添加到现有按钮..我已经完成了一定程度,问题是我可以添加一个ownerdrawn图像,但我无法添加我想要的extact图像..例如见下面的代码
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 );
使用上面的代码将位图转换为图标以添加到我的按钮...如何将精确的位图图像直接添加到现有按钮。请帮我修补..
答案 0 :(得分:2)
我实际上修复了问题..我做的是用HBITMAP替换HICON并且它的工作完美...基本上两者都能正常工作但在我的情况下当我将图标加载到按钮时图标的背景是没有改变...我试过Bitmap然后它工作得很好。现在正在努力定位图像并添加文本......我想我可以通过
答案 1 :(得分:2)
在mfc中将位图分配给按钮的步骤:
代码:
CBitmap bmp;
bmp.LoadBitmap( IDB_BITMAP4 );
CButton* pButton = (CButton* )GetDlgItem(IDC_BUTTON1);
pButton->ModifyStyle(0,BS_BITMAP);
pButton->SetBitmap(bmp);
答案 2 :(得分:1)
您可以使用CBitmapButton::SubclassWindow
对现有按钮进行子类化,然后使用LoadBitmaps
。
答案 3 :(得分: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 );
答案 4 :(得分:0)
使用Feature Pack中的按钮类。他们支持在按钮上显示文本和图像,您的常规按钮不能这样做。查看VS安装目录中的“samples”目录。
答案 5 :(得分: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。你必须:
RGB color with alpha channel
A8:R8:G8:B8
格式导出文件并停用Premultiplied alpha
和Top-down row order